基于OpenCV的MFC程序从摄像机输入数据

来源:互联网 发布:微淘刷粉丝软件安全吗 编辑:程序博客网 时间:2024/05/04 06:47

    在一些情况下,我们要分析从其他地方载入的固定图像。在另外一个情况下,我们要分析从磁盘中读入的视频文件。在更多的情况下,我们想处理从某些设想设备中实时读入的视频流。

    OpenCV中的HighGUI模块,为我们提供了一种简单的方式来处理这种情况。从视频序列中捕捉图像帧,包括如下几种操作。

(1)对摄像头的初始化捕捉


CvCapture *capture = cvCaptureFromCAM(0);//从0号摄像头捕捉

(2)对文件的初始化捕捉

CvCapture *capture = cvCaptureFromAVI(“*.avi”)

(3)捕捉某一帧

CvCapture *capture = NULL;

Iplimge *img = 0;

if(!cvGrabFrame(capture))

{

printf(“Could not grab a fram”);

exit(0)

}

img = cvRetrieveFrame(capture);

(4)释放捕捉源

CvReleaseCapture(&capture);

(5)例程

该例程是MFC工程

在工程中添加链接库就不在详细介绍,具体请参考博客中关于C++使用opencv链接库无法调用的问题一文。

//定义一个公有成员CString filePath定义方法请参考博客中MFC和Flash的完整/通讯一文,同时下文

//中提到的工程中添加函数等方法都请参照MFC和Flash的完整通讯中的方法

OpenVideo()   //在工程中自己添加,用于打开*.avi文件

1

//ShowImage(),将视频文件中的帧显示出来

//如果获得的文件地址为空,则需要用户重新选择需要打开的文件

2

//如过地址正确,则看是否可以正确读取帧

3

//创建窗口,用于显示正确的帧

4

//读取帧

IplImage *pFrame = NULL;

CvCapture *pCapture = Null

5

//应用程序结束的时候,需要销毁和释放所有的窗口和指针

cvReleaseImage(&pFrame );

cvReleaseCapture(&pCapture );

//如果想显示一张图片,则调用下面的函数,然后创建窗口并显示即可

6

//如果想显示实时视频则调用如下关键函数

CvCapture *pCapture = Null;

 image

7

如上,针对视频文件,图片和实时视频的显示都已可以正常显示。

 

 

一帆风顺

原创粉丝点击