vs2017+opencv3.2.0+pylon5.0.10

来源:互联网 发布:麦迪vs科比数据对比 编辑:程序博客网 时间:2024/05/29 18:36

现阶段做双目立体视觉工作,前几天刚配置好开发环境,随笔记录下。
采用的相机是basler acA1920-155um 型号。本人选择opencv3.2.0基于Windows平台。
opencv官方下载链接
http://opencv.org/releases.html#。
pylon5.0.10官方下载链接https://www.baslerweb.com/cn/support/downloads/software-downloads/pylon-5-0-10-windows/

配置过程:
1:安装opencv3.2.0和pylon5.0.10,pylon5.0.10需要选择开发者模式,同时选择相机接口类型,本人采用的usb3.0接口。

2:添加opencv的环境变量,
这里写图片描述
pylon安装过程中会自动配置环境变量。

3:vs2017中新建一个空项目的控制台程序,然后添加一个cpp文件,再打开属性管理器
这里写图片描述
在debugx64 中新建一张属性表然后进行编辑。

4:先在通用属性VC++目录中 的包含目录
这里写图片描述

添加四个路径:
opencv\build\include
opencv\build\include\opencv
opencv\build\include\opencv2
basler\Development\include
取决于你的具体安装位置

5:在库目录添加
这里写图片描述
basler\Development\lib\x64
opencv3.2.0\build\x64\vc14\lib

6:在链接器输入选项中输入
这里写图片描述

输入opencv_world320d.lib 对应的是debug 模式
输入opencv_world320.lib 不带d的是release 模式

注意编译器要选择 x64

7: 将配置好的属性表保存出来,以后每次新建工程添加一次

测试代码

#include"stdafx.h"#include"opencv2/opencv.hpp"#include <pylon/PylonIncludes.h>  #include<iostream>#ifdef PYLON_WIN_BUILD  #include <pylon/PylonGUI.h>      #endif  /*-----------------------------命名空间-------------------------------------*/using namespace Pylon;using namespace cv;using namespace std;int main(){    //pylon 类型图片定义    CPylonImage pylonImage;    //pylon 格式转换定义    CImageFormatConverter formatConverter;    formatConverter.OutputPixelFormat = PixelType_BGR8packed;    //指向拍摄结果的结构体指针    CGrabResultPtr ptrGrabResult;    //opencv 类型图片定义    Mat openCvImage_left;    Mat openCvImage_right;    /*-----------------------------pylon相机初始化-----------------------------------*/    //pylon相机自动初始化和终止    PylonAutoInitTerm autoInitTerm;     //建立传输工程    CTlFactory& tlFactory = CTlFactory::GetInstance();      //获取相机信息    DeviceInfoList_t devices;    if (tlFactory.EnumerateDevices(devices) == 2)    {        cout << "监测到两个相机" << endl;    }    //创建相机序列并标识信息    CInstantCameraArray cameras(2);                                                                      for (size_t i = 0; i < cameras.GetSize(); ++i)    {        cameras[i].Attach(tlFactory.CreateDevice(devices[i]));    }    /*-----------------------------pylon相机开始抓取-----------------------------------*/    //开始拍摄    cameras.StartGrabbing();                                                                                while(cameras.IsGrabbing())    {        // 设置指针重载间隔,20ms        cameras.RetrieveResult(20, ptrGrabResult, TimeoutHandling_ThrowException);                          intptr_t cameraContextValue = ptrGrabResult->GetCameraContext();        //显示实时图像        DisplayImage(cameraContextValue, ptrGrabResult);                                            /*-----------------------------pylon图像到opencv图像的转换-----------------------------------*/        if (ptrGrabResult->GetCameraContext() == 0)        {            formatConverter.Convert(pylonImage, ptrGrabResult);            openCvImage_left = cv::Mat(pylonImage.GetHeight(), pylonImage.GetWidth(), CV_8UC3, (uint8_t *)pylonImage.GetBuffer());        }        if (ptrGrabResult->GetCameraContext() == 1)        {            formatConverter.Convert(pylonImage, ptrGrabResult);            openCvImage_right = cv::Mat(ptrGrabResult->GetHeight(), ptrGrabResult->GetWidth(), CV_8UC3, (uint8_t *)pylonImage.GetBuffer());        }    }    system("pause");    return 0;}

这段代码 实现了打开双目相机,并将pylon格式图片转换为opencv Mat 类型,便于后续处理。

测试结果。
这里写图片描述

原创粉丝点击