【工业相机Pointgray配置VS2012】Pointgray配置VS2012并将Pointgray类型转换成Mat类型



本人在做项目的过程中,使用到了加拿大一家公司生产的Pointgray相机(32位,也有64位的),需要配置在VS2012中(其他版本的vs的配置方法类似)使用,配置方法如下:

1.在公司的官网上下载相适应的相机SDK包;

2.打开vs2012,新建一个项目:选择Debug x86 (64bit的SDK不支持win32 debug模式);

3.双击Debug |x86,进入到属性页,点击VC++目录后,需要添加的部分 是包含目录和库目录,其中包含目录是所用到的.h文件的路径,库目录是所用到的存放静态库.lib文件的路径。

包含目录中添加:C:\Program Files\Point Grey Research\FlyCapture2\include

库目录添加:C:\Program Files\Point Grey Research\FlyCapture2\lib86或者添加(有的没有在lib后面加86或者是64):C:\Program Files\Point Grey Research\FlyCapture2\lib当然,必须是你的pointgraySDK包解压在C盘相应的位置才行。

4.连接器->输入->附加依赖项 中添加:FlyCapture2.lib

配置好之后就可以对相机进行控制了,但是Opencv中的图片格式是Mat类型的,所以还要对相机采集的图片格式进行转换,才能用Opencv进行采集与处理,程序如下:

[cpp]   view plain  copy
  1. #include "FlyCapture2.h"  
  2. //#include <opencv2/core/core.hpp>  
  3. //#include <opencv2/highgui/highgui.hpp>  
  4. #include<opencv2/opencv.hpp>  
  5. #include <iostream>  
  6.   
  7. using namespace FlyCapture2;  
  8.   
  9.   
  10. /*int main() 
  11. { 
  12.     // Do Flycapture2 related stuff... 
  13.     Camera cam;  
  14.     return 0; 
  15. }*/  
  16. int main()  
  17. {  
  18.     Error error;  
  19.     Camera camera;  
  20.     CameraInfo camInfo;  
  21.   
  22.     // Connect the camera  
  23.     error = camera.Connect( 0 );  
  24.     if ( error != PGRERROR_OK )  
  25.     {  
  26.         std::cout << "Failed to connect to camera" << std::endl;     
  27.         system("pause");  
  28.         return false;  
  29.     }  
  30.       
  31.     // Get the camera info and print it out  
  32.     error = camera.GetCameraInfo( &camInfo );  
  33.     if ( error != PGRERROR_OK )  
  34.     {  
  35.         std::cout << "Failed to get camera info from camera" << std::endl;       
  36.         return false;  
  37.     }  
  38.     std::cout << camInfo.vendorName << " "  
  39.               << camInfo.modelName << " "   
  40.               << camInfo.serialNumber << std::endl;  
  41.       
  42.     error = camera.StartCapture();  
  43.     if ( error == PGRERROR_ISOCH_BANDWIDTH_EXCEEDED )  
  44.     {  
  45.         std::cout << "Bandwidth exceeded" << std::endl;       
  46.         return false;  
  47.     }  
  48.     else if ( error != PGRERROR_OK )  
  49.     {  
  50.         std::cout << "Failed to start image capture" << std::endl;       
  51.         return false;  
  52.     }   
  53.       
  54.     // capture loop  
  55.     char key = 0;  
  56.     while(key != 'q')  
  57.     {  
  58.         // Get the image  
  59.         Image rawImage;  
  60.         Error error = camera.RetrieveBuffer( &rawImage );  
  61.         if ( error != PGRERROR_OK )  
  62.         {  
  63.             std::cout << "capture error" << std::endl;  
  64.             continue;  
  65.         }  
  66.           
  67.         // convert to rgb  
  68.         Image rgbImage;  
  69.         rawImage.Convert( FlyCapture2::PIXEL_FORMAT_BGR, &rgbImage );  
  70.          
  71.         // convert to OpenCV Mat  
  72.         unsigned int rowBytes = (double)rgbImage.GetReceivedDataSize()/(double)rgbImage.GetRows();         
  73.         cv::Mat image = cv::Mat(rgbImage.GetRows(), rgbImage.GetCols(), CV_8UC3, rgbImage.GetData(),rowBytes);  
  74.           
  75.         cv::imshow("image", image);  
  76.         key = cv::waitKey(30);          
  77.     }  
  78.       
  79.     error = camera.StopCapture();  
  80.     if ( error != PGRERROR_OK )  
  81.     {  
  82.         // This may fail when the camera was removed, so don't show   
  83.         // an error message  
  84.     }    
  85.       
  86.     camera.Disconnect();  
  87.     system("pause");  
  88.     return 0;  
  89. }  



  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值