您好,欢迎来到伴沃教育。
搜索
您的当前位置:首页vs2015+opencv3.3+mfc读取摄像头显示在图片控件

vs2015+opencv3.3+mfc读取摄像头显示在图片控件

来源:伴沃教育

【嵌牛导读】:

     opencv界面开发常用的有mfc、QT、c#等。本文就是使用opencv读取摄像头,使用opencv处理视频的第一步。转载自本人博客。

【嵌牛正文】:

1、配置环境为VS2015+OpenCV3.3,按照以上博主的教程搭建图形界面,最后程序正常执行,摄像头旁边的led灯也亮了,但是图形控件中并没有显示出来摄像头的图像。

    2、新建一个Mat型变量和VideoCapture 变量

Mat g_srcImage;

VideoCapture Capture(0);

3、修改打开摄像头按钮事件相应函数,将获取摄像头一帧数据的函数改为:Capture >> g_srcImage;再将Mat型的g_srcImage改为IplImage类型变量,修改后的函数如下:

// TODO: 在此添加控件通知处理程序代码 namedWindow("显示摄像头"); Capture >> g_srcImage; imshow("显示摄像头", g_srcImage); frame= &IplImage(g_srcImage); pDC = GetDlgItem(IDC_PIC_STATIC)->GetDC();//GetDlgItem(IDC_PIC_STATIC)意思为获取显示控件的句柄(句柄就是指针),获取显示控件的DC GetDlgItem(IDC_PIC_STATIC)->GetClientRect(&rect); hDC = pDC->GetSafeHdc();//获取显示控件的句柄 CvvImage m_CvvImage; m_CvvImage.CopyOf(frame, 1); //复制该帧图像 m_CvvImage.DrawToHDC(hDC, &rect); //显示到设备的矩形框内 ReleaseDC(pDC); SetTimer(1, 25, NULL); //定时器,定时时间和帧率一致

4、同时,将定时器函数做出同样的更改:

// TODO: 在此添加消息处理程序代码和/或调用默认值a

Capture >> g_srcImage;

imshow("显示摄像头", g_srcImage);

pDC = GetDlgItem(IDC_PIC_STATIC)->GetDC();//GetDlgItem(IDC_PIC_STATIC)意思为获取显示控件的句柄(句柄就是指针),获取显示控件的DC 

GetDlgItem(IDC_PIC_STATIC)->GetClientRect(&rect);

hDC = pDC->GetSafeHdc();//获取显示控件的句柄 

frame = &IplImage(g_srcImage);

CvvImage m_CvvImage;

m_CvvImage.CopyOf(frame, 1); //复制该帧图像   

m_CvvImage.DrawToHDC(hDC, &rect); //显示到设备的矩形框内 

CDialogEx::OnTimer(nIDEvent);

5、关闭摄像头只是简单的关闭定时器

ReleaseDC(pDC);

KillTimer(1);

Copyright © 2019- bangwoyixia.com 版权所有 湘ICP备2023022004号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务