[opencv]MFC打开摄像头显示图像
来源:互联网 发布:ubuntu运行loic.exe 编辑:程序博客网 时间:2024/04/30 16:50
1.创建基于对话框的MFC项目。
2.opencv的相关配置见http://blog.csdn.net/kingcooper/article/details/50769894。
3.MFC下使用opencv。
由于opencv2.2以后取消了CvvImage类,所以需要在项目中分别添加CvvImage.h和CvvImage.cpp。
下载链接:http://download.csdn.net/detail/kingcooper/9450106
在头文件中添加CvvImage.h文件,在源文件中添加CvvImage.cpp,在...Dlg.cpp源文件中添加
#include "CvvImage.h"#include "cv.h"#include "highgui.h"using namespace cv;using namespace std;Mat frame;CvvImage cimg1;VideoCapture cap(0);
4.编辑窗口
对对话框进行控件添加,得到如下结果:
有时窗口编辑界面找不到,点击至资源视图-项目名-项目名.rc*-Dialog-IDD_MFC_Dialog,双击即可。
5.添加代码
更改打开摄像头控件ID为IDC_opencamera,更改暂停控件ID为IDC_pause,更改图像控制Picture Control的ID为IDC_frame。
双击打开摄像头控件生成事件处理函数,添加代码如下:
void CMFC打开摄像头显示图像Dlg::OnBnClickedopencamera(){// TODO: 在此添加控件通知处理程序代码CDC *pDC = GetDlgItem(IDC_frame)->GetDC();//根据ID获得窗口指针再获取与该窗口关联的上下文指针 HDC hdc = pDC->GetSafeHdc(); // 获取设备上下文句柄 CRect rect;// 矩形类 GetDlgItem(IDC_frame)->GetClientRect(&rect); if (cap.isOpened()){cap >> frame;IplImage img1 = IplImage(frame);cimg1.CopyOf(&img1);cimg1.DrawToHDC(hdc, &rect);SetTimer(1, 1, NULL);//第一个1为计时器名称,第二个为时间间隔,单位毫秒}}由于opencv的waitKey不能有效使用,这里使用SetTimer函数,需要添加计时器以实现循环。
添加计时器:类向导-消息-WM-TIMER,双击添加OnTimer函数,如下
void CMFC打开摄像头显示图像Dlg::OnTimer(UINT_PTR nIDEvent){// TODO: 在此添加消息处理程序代码和/或调用默认值CDialogEx::OnTimer(nIDEvent);}添加程序如下
void CMFC打开摄像头显示图像Dlg::OnTimer(UINT_PTR nIDEvent){// TODO: 在此添加消息处理程序代码和/或调用默认值CDC *pDC = GetDlgItem(IDC_frame)->GetDC();//根据ID获得窗口指针再获取与该窗口关联的上下文指针 HDC hdc = pDC->GetSafeHdc(); // 获取设备上下文句柄 CRect rect;// 矩形类 GetDlgItem(IDC_frame)->GetClientRect(&rect); if (cap.isOpened()){cap >> frame;IplImage img1 = IplImage(frame);cimg1.CopyOf(&img1);cimg1.DrawToHDC(hdc, &rect);SetTimer(1, 10, NULL);}CDialogEx::OnTimer(nIDEvent);}此时,第一个控件打开摄像头显示图像的功能便可实现了。
双击暂停控件产生事件处理函数,添加程序如下:
void CMFC打开摄像头显示图像Dlg::OnBnClickedpause(){// TODO: 在此添加控件通知处理程序代码KillTimer(1);//不使用计时器}
到此打开摄像头显示图像,暂停功能都进行了实现,暂停后仍要继续运行则点击打开摄像头控件即可。
显示效果如下:
1 0
- [opencv]MFC打开摄像头显示图像
- OpenCv打开摄像头,显示图像,保存视频
- MFC中使用OpenCV显示摄像头图像
- 在MFC中显示OpenCV的Mat格式图像和打开摄像头
- MFC+OpenCV打开摄像头
- MFC中使用Opencv打开摄像头并显示
- MFC 通过opencv打开摄像头 拍照后显示保存
- VS2008+MFC+opencv 显示视频图像/捕捉摄像头视频界面
- MFC中使用OpenCV显示摄像头图像并二值化
- MFC+OpenCV打开图像
- opencv打开摄像头显示视频
- OpenCV之显示摄像头图像
- OpenCV+MFC显示图像
- opencv+MFC显示图像
- OpenCV+MFC 显示图像
- OpenCV+MFC显示图像
- Opencv调用摄像头,显示摄像头图像
- 在mfc中利用opencv打开摄像头并显示在窗口上
- 利用spring的aop实现事务管理步骤
- 【JAVA知识】多线程开发
- TCP长连接与短连接的区别
- spark MLlib
- bzoj1038 瞭望塔 半平面交
- [opencv]MFC打开摄像头显示图像
- Http请求、Http响应、 Socket
- C/C++宏定义中#与##区别
- 红黑树
- 文件流操作--将一个文件复制到另外一个地方
- 不知名1
- 关于在eclipse中导入android support design包出错的问题【不定时更新】
- Java中日期的格式化
- SVN clean up操作的时候进入死循环解决方法