话不多说,大家跟我一起念,保证分享源码!保证分享源码!保证分享源码!
基础预览:
微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。
OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效--由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
实践开始:
1、打开你的VS,点击创建新的项目弹出如下界面:
项目命名cameras,选择MFC程序,点击确定。
点击下一步,选择基于对话框,点击下一步
点击下一步,再点下一步直到这个界面
选择生成如图的类,这个时候直接点击完成。于是基本的MFC程序我们就创建完成了。
2、绘制界面
首先删除自动创建的控件
然后从工具箱拖动控件到窗体上
右击按钮在弹出的菜单中选择属性,修改Caption属相为“打开双摄像头”
然后右击另外俩个控件选择属性并,修改ID分别为“IDC_VIEW1”"IDC_VIEW2
至此界面绘制完成。
3、程序实现
双击窗体上的按钮弹出如下代码
在该函数出插入如下代码:
void CcamerasDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
Mat frame1, frame2;//创建mat对象
VideoCapture capture1(0), capture2(1);//创建视频流对象
try//防止无摄像头报错
{
while (true)//循环读取视频
{
capture1 >> frame1;
capture2 >> frame2;
imshow("view1", frame1);
imshow("view2", frame2);
waitKey(30);
}
}
catch (const std::exception&)//错误提示
{
CString str("请插入足够的摄像头");
MessageBox(str, L"提示", MB_OK);
}
}
好了,代码加完了,这个时候我们会发现有红色下划线,是因为我们没有添加头文件,滚动滑轮翻到最上面,填加#include<opencv2\opencv.hpp>
using namespace cv;
然后按下Ctrl+f搜索OnInitDialog,找到后向下面找到该位置
并在该位置添加如下代码
// TODO: 在此添加额外的初始化代码
namedWindow("view1", 0);
HWND hwnd = (HWND)cvGetWindowHandle("view1");
HWND hparent = ::GetParent(hwnd);
::SetParent(hwnd, GetDlgItem(IDC_VIEW1)->m_hWnd);
::ShowWindow(hparent, SW_HIDE);//设置VIEW1控件
namedWindow("view2", 0);
HWND hwnd2 = (HWND)cvGetWindowHandle("view2");
HWND hparent2 = ::GetParent(hwnd2);
::SetParent(hwnd2, GetDlgItem(IDC_VIEW2)->m_hWnd);
::ShowWindow(hparent2, SW_HIDE);
//设置VIEW2控件
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
添加完毕,大功告成!!抓紧点击测试一下吧!
源文件包随后上传!!楼主最近在学习图像处理,欢迎一起留言交流!