VS2010 + OpenCV2.3.1打开多个摄像头

原创 2012年04月29日 11:27:49



转载请注明出处:http://blog.csdn.net/wl_soft50/article/details/7521970


最近OpenCV更新到2.3.1的版本了,而自己之前使用的是2.1的版本,最近一段时间也是去研究OpenNI的代码去了,所以对于2.3.1的版本新增的功能也没有很多的了解。这次就了解OpenCV2.3.1版本与OpenCV2.1的区别做了以下功能的展示。

OpenCV2.3.1在VS2010上的配置就不详述了,网上一堆一堆的。其实,OpenCV每次的更新都会在其官方的网站上做比较详细的说明,这边我就其官方的说明结合自己的使用情况简单的总结:

1、OpenCV自2.2以后的版本的模块都有仔细划分,不再是2.1及以前的5个模块(cxcore/cv/highgui/ml/cvaux);

2、在畸变校正的程式上有比较大的改变,适合更大的畸变校正;

3、支持android系统,程式API调用稳定性更高(以前还做过在android中嵌入OpenCV,现在更方便了);

4、增加新概念:视网膜识别,并有参考资料;

5、人物识别有比较好的方法,(Haar小波&LBP人脸检测识别,HOG人检测等);

6、增加三目摄像头(OpenCV2.1支持2个)(我要分享给大家的,呵呵...)。

当然更新的部分不会使这么多了,还有其他的比较多的我没有介绍,想具体的了解请参考:(http://opencv.willowgarage.com/wiki/OpenCV%20Change%20Logs)。

讲到主题好了,OpenCV中打开多摄像头之前很多人研究过了,需要用到DirectShow,在OpenCV中文网上于老师也将DS进行打包,直接在OpenCV直接可以调用了。如果有兴趣,也可以做尝试,这里可以下载源程序。因为OpenCV2.3.1中把DirectShow的程式整合进去了,就可以直接进行调用了(其实是一样的道理),就是cvCaptureFromCAM()函数,下面是具体的代码:

#include "stdafx.h"
#include <core\core.hpp>
#include <highgui\highgui.hpp>
#include <imgproc\imgproc.hpp>
#include <iostream>

using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
	////////////////////////////////////////////////
	//Open Multi-Camera in OpenCV2.3.1
	////////////////////////////////////////////////

	IplImage* pFrame[4] = {NULL,NULL,NULL,NULL};

	CvCapture* pCapture[4] = {NULL,NULL,NULL,NULL};

	cvNamedWindow("Camera1",0);
	cvNamedWindow("Camera2",0);
	cvNamedWindow("Camera3",0);
	//cvNamedWindow("Camera4",0);

	cvResizeWindow("Camera1",300,300);
	cvResizeWindow("Camera2",300,300);
	cvResizeWindow("Camera3",300,300);
	//cvResizeWindow("Camera4",300,300);

	cvMoveWindow("Camera1",0,0);
	cvMoveWindow("Camera2",0,330);
	cvMoveWindow("Camera3",310,0);
	//cvMoveWindow("Camera4",310,330);

	pCapture[0] = cvCaptureFromCAM(0);
	pCapture[1] = cvCaptureFromCAM(1);
	pCapture[2] = cvCaptureFromCAM(2);
	//pCapture[3] = cvCaptureFromCAM(3);

	while(1)
	{
		pFrame[0] = cvQueryFrame(pCapture[0]);
		pFrame[1] = cvQueryFrame(pCapture[1]);
		pFrame[2] = cvQueryFrame(pCapture[2]);
		//pFrame[3] = cvQueryFrame(pCapture[3]);

		cvShowImage("Camera1",pFrame[0]);
		cvShowImage("Camera2",pFrame[1]);
		cvShowImage("Camera3",pFrame[2]);
		//cvShowImage("Camera4",pFrame[3]);

		char c = cvWaitKey(10);
		if(c == 27)
		{
			break;
		}
	}
	cvReleaseImage(&pFrame[0]);
	cvReleaseImage(&pFrame[1]);
	cvReleaseImage(&pFrame[2]);
	//cvReleaseImage(&pFrame[3]);

	cvReleaseCapture(&pCapture[0]);
	cvReleaseCapture(&pCapture[1]);
	cvReleaseCapture(&pCapture[2]);
	//cvReleaseCapture(&pCapture[3]);

	cvDestroyAllWindows();

	return 0;
}
本来是想来打开4个的,但是第4个摄像头的内容和第3个是一样的,这边也没有具体去做研究(难道是只能打开三个?)。我觉得不怎么可能,因为directShow是支持多个的,后面尝试出来了继续在本文中更新。

opencv读取并显示两个摄像头

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

opencv读取多个摄像头

说明:今天蹭了机器视觉课程,讲到了stereopsis,立体视觉,讲到了关于通过多个摄像头获取object的depth信息的事情,因为想到从来没有试过打开多个摄像头进行过处理,这次进行了测试,这里小小...
  • cpongo3
  • cpongo3
  • 2015-11-19 17:58:59
  • 2859

opencv获取多个摄像头名字和编号

因为项目需要,利用opencv读取多个摄像头,但没法确定摄像头的编号。查看opencv的源码,摄像头的id主要利用了listDevices这个函数,自己把这个函数单独提取出来,根据vector int...
  • hyqwmxsh
  • hyqwmxsh
  • 2017-07-05 19:02:19
  • 2843

opencv获取摄像头的个数及名字

最近需要使用多个摄像头来进行视频分析,有一个问题就是如何获取目前主机上有多少个摄像头。网上看了下,用VideoInput这个开源库的居多,但是还要引入这个库以及一些附加的依赖库,显得较为麻烦。其实在o...
  • chengkun183
  • chengkun183
  • 2015-07-16 18:02:27
  • 6574

opencv 打开多个摄像头

  • 2013年11月30日 16:26
  • 5.52MB
  • 下载

【计算机视觉】opencv读取多个摄像头

【计算机视觉】opencv读取多个摄像头标签(空格分隔): 【图像处理】说明:今天蹭了机器视觉课程,讲到了stereopsis,立体视觉,讲到了关于通过多个摄像头获取object的depth信息的事情...
  • LG1259156776
  • LG1259156776
  • 2015-11-12 20:45:24
  • 4654

<em>opencv</em> <em>摄像头</em>和视频操作的几种方法

<em>opencv</em> <em>摄像头</em>和视频操作的几种方法打开<em>摄像头</em>的两种方法以及保存录制保存视频的方法带快进快退和实时显示当前视频进度
  • 2018年04月18日 00:00

opencv读取多个摄像头并保存当前视频流图片

#include "mainwindow.h" #include "ui_mainwindow.h" #include #include #include MainWindow::MainWi...
  • qq_32039433
  • qq_32039433
  • 2017-09-12 14:45:10
  • 512

Opencv同时调用两个摄像头

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

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

之前做过双目相机的标定,需要同时开启两个摄像头同时采集图像,写过很麻烦每次只能采集一对图像的程序,后来发现waitKey()的使用可以很方便地通过键盘输入采集图像,写在博客里面希望可以给新手一些帮助吧...
  • qq_30911665
  • qq_30911665
  • 2017-06-09 11:31:55
  • 1471
收藏助手
不良信息举报
您举报文章:VS2010 + OpenCV2.3.1打开多个摄像头
举报原因:
原因补充:

(最多只允许输入30个字)