完整VS2010中使用MFC+Opencv设计视频读取(有代码和相关解析)

第一步:搭建MFC+OPENCV环境,这些网上有很多教程我就不一一赘述了。
现在说说我的办法,我利用的是vs2010+opencv2410,

 这是我之前已经配置符合我自己版本的配置文件,直接通过属性管理器-单击右键添加现有的属性表引入就好。
第二步:这里面我们使用了CvvImage.h和CvvImage.cpp类,下面对这两个类简要的介绍下:
1.CvvImage类,在opencv2.3以后版本中已经消失了,但是opencv在MFC中显示图像需要这个类很多函数和功能,以我版本为例,最简单办法就是,直接在项目单击右键添加类-C++,写上对应文件名在网上找到相关代码复制进去就可以。
2.关于这个类,通过查阅CvvImage参考手册,这里面包含了很多类似于读取图像和显示图像的相关处理函数。
第三步:我们在资源视图中打开Dialog,开始添加控件:

 第四步:在对应dialog的头文件添加定义参数

 如果发现有些类调用不了,可能是你忘记添加头文件了

第五步:构造函数中初始化

 第六步:找到对应的dialog源文件,在OnInitDialog()中添加代码

 第七步:添加openfile按钮响应函数(右键按钮添加响应处理函数)

 第八步:添加OK即图中的播放按钮响应事件处理函数
void CMfcOpenDlg::OnBnClickedOk()
{
    IplImageimg=cvLoadImage((LPCTSTR)FileName);
    CvvImage cvvImg;
    cvvImg.CopyOf(img);
    cvvImg.DrawToHDC(hDC,&rect);
    //OnOK();
    if(!capture)
    {
        capture=cvCreateFileCapture((LPCTSTR)FileName);
    }
    if(!capture)
    {
        AfxMessageBox("Error!£?");
        return;
    }
    SetTimer(1,25,NULL);
}
最后一步:设置定时器读取视频中的帧(Dlg添加WM_TIMER)

 确定后进入函数体内,添加如下代码:

 因为人眼睛能识别的频率是60HZ,所以一旦图像刷新频率小于60HZ,就看起来像连贯视频。
本文代码参照的是http://blog.csdn.net/Bright_Geek/article/details/41172611?locationNum=2.其余的是自己设计,仅供学习。。。。

猜你喜欢

转载自blog.csdn.net/qwe1021647502cmx/article/details/56278555