win10VS+QTOpenCV灰点相机配置及其使用

tech2022-10-15  129

目录

一、VS+QT配置

二、VS+OpenCV

三、VS+灰点相机


一、VS+QT配置

1、VS-扩展-管理扩展-搜索qt-下载

2、下载Qt的工具包,在如下网址有所有的,下载 qt-opensource-windows-x86-5.14.2.exe,然后安装。

http://download.qt.io/archive/qt/5.14/5.14.2/

3、安装时需要注册账号。出现如下界面,如果你没有特殊要求,只需要勾选MSVC2017 32-bit/64bit即可。

4、在安装好QT扩展的vs中打开扩展-Qt VS Tools 中点击 Qt Option

将编译器路径填入。

项目属性-Qt ProjectSetting中选择刚刚命名的版本

至此Qt配置完成。

二、VS+OpenCV

这个我参考的是这篇:

https://blog.csdn.net/Chris_zhangrx/article/details/79090463

安装编译已经讲的很详细,我就说说配置的注意事项。

i.VC++目录-常规 包含目录添加 图的Include文件夹。

库目录添加F:\opencv\install\x64\vc16\lib(不要复制,选择你自己的 路径)

ii.C/C++ 附加包含目录,继续添加include文件夹。

iii.链接器-常规-附加库目录-添加F:\opencv\install\x64\vc16\lib

链接器-输入-附加依赖项添加opencv_world3410d.lib(注意此时最后有d)。

最后换release,与其不同的时候添加附加依赖项是opencv_world3410.lib,是没有d的,意味着非debug版本。

 

三、VS+灰点相机

1、SDK安装:

首先你要拿到灰点相机的SDK,如下所示,将其安装。出现选项的时候选择第二个SDK工具包

安装路径会出现如下文件夹。

2、配置:

首先配置环境路径:将E:\FLIR Systems\Spinnaker\bin\vs2015此路径文件夹加入你的环境变量。

打开你新建的关于灰点相机的项目,项目-项目属性,进行配置:

记住此时最好将 配置改为x64.

i.VC++目录-常规 包含目录添加 上图的Include文件夹。

库目录包含上图的lib64/vs2015文件夹

ii.C/C++ 附加包含目录,继续添加上图的include文件夹。

iii.链接器-常规-附加库目录-添加上图的lib64/vs2015文件夹

链接器-输入-附加依赖项添加Spinnakerd_v140.lib(注意此时最后有d)。

最后换release,与其不同的时候添加附加依赖项是Spinnaker_v140.lib,是没有d的,意味着非debug版本。

3、代码实现:

需要做的预设:

#include "Spinnaker.h" #include "SpinGenApi/SpinnakerGenApi.h" using namespace Spinnaker; using namespace Spinnaker::GenApi; using namespace Spinnaker::GenICam;

如下是相机的初始化:

SystemPtr system = System::GetInstance(); CameraList camList = system->GetCameras(); //从系统中获取相机的列表 unsigned int numCameras = camList.GetSize(); if (numCameras == 0) { //清除相机列表 camList.Clear(); system->ReleaseInstance(); return -1; } //获取相机 CameraPtr pCam = camList.GetByIndex(0); //获取TL设备nodemap //INodeMap& nodeMapTLDevice = pCam->GetTLDeviceNodeMap(); /* FeatureList_t features; CCategoryPtr category = nodeMap.GetNode("DeviceInformation"); //获取设备的特征 category->GetFeatures(features);*/ //初始化相机 pCam->Init();

如下是相机获取图片,请预先在SpinView里调整你想要的格式:

//开始采集 pCam->BeginAcquisition(); const unsigned int k_numImages = imageCount; for (unsigned int imageCnt = 1; imageCnt <=k_numImages; imageCnt++) { try { //捕获图像会使图像存储在缓冲区,一旦缓冲区中的图像被保存和/或不再需要时, //必须释放图像以保持缓冲区填满 //1000ms缓冲时间 ImagePtr pResultImage = pCam->GetNextImage(1000); ImagePtr convertedImage = pResultImage->Convert(PixelFormat_Mono16, HQ_LINEAR); Mat frame = Mat(convertedImage->GetHeight(), convertedImage->GetWidth(), CV_16UC1, convertedImage->GetData()); Mat downFrame = Mat::zeros(256,256,CV_16UC1); resize(frame,downFrame,downFrame.size()); image_process(downFrame,imageCnt); pResultImage->Release(); }catch (Spinnaker::Exception& e) { result = -1; break; } catch (cv::Exception& e) { emit signal_log(e.what()); result = -1; break; } } pCam->EndAcquisition(); }

详细的API介绍请见http://softwareservices.flir.com/Spinnaker/latest/page2.html

最新回复(0)