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


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

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

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


    双目视觉实现总结:

    一、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、编译程序,成功!


  • 相关阅读:
    一些小问题的解决
    JavaScript面向对象的支持
    HTML 5 会为 Flash 和 Silverlight 送终吗?
    Web Forms 2.0 行将被 HTML 5 代替
    XHTML 2: 出师未捷身先死, HTML 5:万千宠爱于一身
    Javascript 技巧大全
    深入了解 HTML 5
    HTML 5 令人期待的 5 项功能
    SQL SERVER 2005中的Schema详解
    VS2008 ,TFS2008破解序列号
  • 原文地址:https://www.cnblogs.com/libing64/p/2878754.html
Copyright © 2020-2023  润新知