图像处理--多个平台下双目视觉的实现

迷南。 2022-06-18 11:47 283阅读 0赞

VC6.0下的实现双目视觉见另一篇博客:http://blog.csdn.net/renshengrumenglibing/article/details/6884124

这里主要讲解在opencv2.3+VS10下的实现,opencv2.1+VS10跟这个类似,但是需要逆序打开摄像头。

先看效果:打开三个摄像头:两个USB摄像头一个联想自带的摄像头

0_13204864313mz2.gif

双目视觉实现总结:

一、VC6.0+opencv1.0

实现双目视觉时,采用的是使用了directshow的一个类CameraDS

http://blog.csdn.net/renshengrumenglibing/article/details/6884124

二、opencv2.1+VS10
在opencv2.1+VS10时调用摄像头只要逆序打开多摄像头就可以了,比如先打开ID = 2的再打开ID = 1的,否则第二的摄像头无法打开。
三、opencv2.3+VS10
在opencv2.3+VS10下试了一下,可以直接打开多个摄像头,无需逆序,也无需使用directshow的类。

源码如下:打开三个摄像头opencv2.3+VS10
#include “highgui.h”
#include “cv.h”
int main(){

CvCapture* pCapture0 = cvCreateCameraCapture(0);
CvCapture* pCapture1 = cvCreateCameraCapture(1);
CvCapture* pCapture2 = cvCreateCameraCapture(2);
IplImage* pFrame0 = NULL;
IplImage * pFrame1 = NULL;
IplImage * pFrame2 = NULL;
//创建窗口
cvNamedWindow(“video0”, 1);
cvNamedWindow(“video1”,1);
cvNamedWindow(“video2”,1);

//显示视屏
while(1)
{
pFrame0=cvQueryFrame( pCapture0 );
pFrame1 = cvQueryFrame(pCapture1);
pFrame2 = cvQueryFrame(pCapture2);
if(!pFrame0)break;
if(!pFrame1)break;
if(!pFrame2)break;
cvShowImage(“video0”,pFrame0);
cvShowImage(“video1”,pFrame1);
cvShowImage(“video2”,pFrame2);
char c=cvWaitKey(33);
if(c==27)break;
}
cvReleaseCapture(&pCapture0);
cvReleaseCapture(&pCapture1);
cvReleaseCapture(&pCapture2);
cvDestroyAllWindows();
return 0 ;
}

opencv2.3+VS10的配置:
操作系统:Windows 7 x86 中文旗舰版

编译环境:Visual Studio 2010 中文旗舰版

OpenCV版本:OpenCV-2.3.0-win

1、下载OpenCV(必须要superpack.exe)

http://www.opencv.org.cn/download/OpenCV-2.3.0-win-superpack.exe

2、安装

解压到D盘根目录下。

3、设置系统环境变量

系统环境变量Path中加入

D:\OpenCV2.3\build\x86\vc10\bin

4、建立一个demo

在C++下,新建一个“win32控制台程序”,“空项目”即可,输入以下代码:

#include “StdAfx.h”

#include “highgui.h”

int main()

{

const char* imagename =”D:/Demo.jpg”; //随便放一张jpg图片在D盘或另行设置目录

cv::Mat img = cv::imread(imagename);

if(img.empty()) return -1; //是否加载成功

if(!img.data) return -1;

cv::namedWindow(“image”,CV_WINDOW_AUTOSIZE);

cv::imshow(“image”, img);

cv::waitKey();

return 0;

}

5、配置
(1)、在“视图”中打开“属性管理器”;

(2)、在“属性管理器”中双击Demo的项目名称;

(3)、在“Demo属性页”->“VC++目录”->“包含目录”中添加以下目录:

D:\OpenCV2.3\build\include;D:\OpenCV2.3\build\include\opencv;D:\OpenCV2.3\build\include\opencv2

(4)、在“Demo属性页”->“VC++目录”->“库目录”中添加以下目录:

D:\OpenCV2.3\build\x86\vc10\lib

(5)、在“Demo属性页”(“配置”==“Debug”)->“配置属性”->“链接器”->“输入”->“附加依赖库”中添加以下lib文件:

opencv_core230d.lib
opencv_highgui230d.lib
opencv_video230d.lib
opencv_ml230d.lib
opencv_legacy230d.lib
opencv_imgproc230d.lib

(6)、在“Demo属性页”(“配置”==“Release”)->“配置属性”->“链接器”->“输入”->“附加依赖库”中添加以下lib文件:

opencv_core230.lib
opencv_highgui230.lib
opencv_video230.lib
opencv_ml230.lib
opencv_legacy230.lib
opencv_imgproc230.lib

注意:此时极有可能只是添加进去一个库,最好是打开编辑那一栏后再输入~~

6、编译程序,成功!

发表评论

表情:
评论列表 (有 0 条评论,283人围观)

还没有评论,来说两句吧...

相关阅读

    相关 双目视觉简介

    1. 双目视觉算法简介 1.1. 双目视觉简介 双目视觉广泛应用在机器人导航,精密工业测量、物体识别、虚拟现实、场景重建,勘测领域。 什么是双目视觉?

    相关 双目视觉图像色彩调整

         双目摄像头采集图像时,由于摄像头自身的差异,以及不同角度下光照的影响,可能会在同一时刻采集的左右图像色彩差异较大,这给后续工作带来影响。      如下图所示: