花如月 发表于 2007-10-30 18:08

视频实时采集显示程序

程序虽非原创,但是我做的改动超过了70%。最近看有版友问信号实时采集和显示的问题。程序框架可以完全相同,只是获得信号源的形式不一样,这里通过videoinput函数获得视频源,然后进行后续的操作(通过analoginput可以或者一个模拟信号输入源)。如果你的电脑没有摄像头则程序会报错,需要有摄像头和相应的驱动做支持。画面有些卡,和用qq视频聊天的效果差不多clear all;
imaqmem(30000000);
hard=imaqhwinfo;
name=hard.InstalledAdaptors;
vid=videoinput(name{1});
start(vid);
h=figure('NumberTitle','off','Name','视频捕捉',...
    'MenuBar','none','color','c',...
    'Position', , 'Visible', 'on');
set(h,'doublebuffer','on','outerposition',get(0,'screensize'));
h1=axes('Position', ,'Parent',h);
axes(h1);hold on;axis off;%or set(h,'CurrentAxes',h1);
text(.1, .1,'.','color','w');title('视频源');
h2=axes('Position', ,'Parent',h);
axes(h2);hold on;axis off;%set(h,'CurrentAxes',h1);
text(.1, .1,'.','color',);title('梯度图');
while ishandle(h)
    aa=getsnapshot(vid);% grabbing camera image.
    flushdata(vid);
    axes(h1);a=imshow(aa);
    set(a,'EraseMode','none');
    axes(h2);b=imshow(diff(double(aa(:,:,1)),[]));
    set(b,'EraseMode','none');
    drawnow;% this is important to view realtime.
end
delete(vid)
disp('您选择了关闭!')
------------------------------------------------------------------------------------------
如果你的电脑上有摄像头,而且视频聊天没有问题。那么这个程序
应该不会出什么问题,我用的是matlab7.0加蓝色妖姬。如果发现
问题,请贴出错误提示以便于完善程序!-----------花如月------------
------------------------------------------------------------------------------------------

[ 本帖最后由 花如月 于 2007-10-30 18:39 编辑 ]

eight 发表于 2007-10-30 18:23

不错不错,填补了论坛这方面的空白

花如月 发表于 2007-10-30 18:29

回复 #2 eight 的帖子

原来的程序似乎是mathwork网站上的一个演示例子,用得是for循环。不能算是真正的实时,而且没有清除内存操作。多运行几次,就会提示内存超限,无法得到frame。需要重启matlab才可以,继续用

[ 本帖最后由 花如月 于 2007-10-30 18:34 编辑 ]

zhj0231984 发表于 2007-10-30 19:14

强人啊~~ 学习ing..

donkeyxu 发表于 2007-10-30 19:23

强悍

cjd502 发表于 2007-10-30 21:02

高手阿

lzbones 发表于 2008-1-5 16:11

%发现这个问题:

??? A timeout occurred during GETSNAPSHOT.

Error in ==> try2 at 19
    aa=getsnapshot(vid);% grabbing camera image.

%我的matlab版本R2007b

eight 发表于 2008-1-5 19:36

原帖由 lzbones 于 2008-1-5 16:11 发表 http://www.chinavib.com/forum/images/common/back.gif
%发现这个问题:

??? A timeout occurred during GETSNAPSHOT.

Error in ==> try2 at 19
    aa=getsnapshot(vid);% grabbing camera image.

%我的matlab版本R2007b

2007b 可能对这个函数作了改动,你 help 一下吧

lzbones 发表于 2008-1-5 20:40

原帖由 eight 于 2008-1-5 19:36 发表 http://www.chinavib.com/forum/images/common/back.gif


2007b 可能对这个函数作了改动,你 help 一下吧

谢谢,我回去help看看 :@)

skyplain 发表于 2008-1-9 22:07

确实有楼上所说的问题

wo00wo1988 发表于 2009-5-18 23:01

视频怎么不能保存啊

cc2005726 发表于 2009-5-19 09:50

回复 楼主 花如月 的帖子

这个程序非得用 蓝色妖姬吗?
这是个什么软件?

花如月 发表于 2009-5-19 14:50

回复 12楼 cc2005726 的帖子

不是的,蓝色妖姬只是一种摄像头的牌子。
一般来说xp系统下,只要别的应用程序可以使用摄像头这个程序应该就可以。

如果matlab换了版本,对出错的函数可以help下,做些修改

huuhnn 发表于 2009-6-26 12:44

回复 板凳 花如月 的帖子

你好,最近做一个实验,需用到MATLAB采集视频,请问 你这段程序可以实现所采集的图像的保存吗?因为实验需要每秒采集25张图片或者每秒25帧的视频 共2分钟,所以需要把采集好的视频或图片实时保存到硬盘

linus22 发表于 2009-8-12 15:12

楼主啊,请问你的程序能实现毫秒级么?matlab读取显示一帧bmp图像都要零点几秒呢(用imread,imshow)
页: [1]
查看完整版本: 视频实时采集显示程序