【MFC+opencv+C++】打开两个三个以及多个摄像头【超级详细解析教程】

标签: OpenCV C MFC 摄像头
25人阅读 评论(0) 收藏 举报
分类:

话不多说,大家跟我一起念,保证分享源码!保证分享源码!保证分享源码!


基础预览:

微软基础类库(英语: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

添加完毕,大功告成!!抓紧点击测试一下吧!


源文件包随后上传!!楼主最近在学习图像处理,欢迎一起留言交流!





查看评论

图像拼接(三):OpenCV同时打开两个摄像头捕获视频

使用OpenCV实现同时打开两个USB摄像头,并实时显示视频。如果未检测有两个摄像头,程序会结束并发出“摄像头未安装好”的警告。这里推荐一个小巧的摄像头视频捕捉软件:amcap,使用它可以方便的检查每...
  • czl389
  • czl389
  • 2017-01-18 20:13:41
  • 3511

VS2012+opencv3.0.0beta多个摄像头同时工作

环境为:win7 64位旗舰版+VS2012+opencv3.0.0beta 首先,利用opencv同时打开3个摄像头,程序如下: #include #include using name...
  • hjl240
  • hjl240
  • 2015-04-30 18:13:07
  • 1555

图像处理2--打开多个摄像头

使用双目视觉这里用到了opencv和directshow两个方面的内容,本次没有用到MFC。 需要对编译器进行设置(opencv在图像处理方面很强大,但是在图像采集方面似乎只能采集一个摄像头,因此这...
  • renshengrumenglibing
  • renshengrumenglibing
  • 2011-10-18 13:05:19
  • 7053

opencv打开多个摄像头同时预览

1、下载软件opencvV2.4.6       软件已上传至资源 2、配置OpenCV环境变量      计算机->(右键)属性->高级系统设置->高级(标签)->环境变量->(双击)path(用户...
  • angellove156
  • angellove156
  • 2016-05-20 11:46:07
  • 1484

opencv读取并显示两个摄像头

环境:vs2010+opencv2.4.9为了实现双目摄像头的读取,搜集了一些资料,有人说用directshow来实现,有人说直接可以用opencv读取多个摄像头。那么,既然opencv能实现,为什么...
  • Jasmine_shine
  • Jasmine_shine
  • 2016-06-12 15:19:10
  • 9512

多个摄像头在一个Activity里显示

一个Activity有多摄像头显示
  • CrossFile_TMS
  • CrossFile_TMS
  • 2017-07-17 18:09:00
  • 563

Opencv同时调用两个摄像头

Opencv同时读取两个摄像头
  • zmdsjtu
  • zmdsjtu
  • 2017-04-05 09:38:45
  • 2879

VB调用两个摄像头

  • 2015年08月10日 11:43
  • 69KB
  • 下载

opencv同时开启两个摄像头采集图像

之前做过双目相机的标定,需要同时开启两个摄像头同时采集图像,写过很麻烦每次只能采集一对图像的程序,后来发现waitKey()的使用可以很方便地通过键盘输入采集图像,写在博客里面希望可以给新手一些帮助吧...
  • qq_30911665
  • qq_30911665
  • 2017-06-09 11:31:55
  • 1471

【整理】同一Hub 同时显示一块板上的两个USB摄像头

很多文章提到了双目相机的驱动 以及DirectShow SDK的安装,但是我在实际的操作中还是遇到了许多问题 目前解决了一部分,先在总结如下,供大家参考。 针对单Hub,就是2个摄像头共用...
  • sudsn
  • sudsn
  • 2017-05-08 17:14:50
  • 1014
    个人资料
    等级:
    访问量: 0
    积分: 24
    排名: 0
    文章分类
    文章存档