做最好的机械设备
全国咨询热线:400-123-4567

Dalsa线扫相机-二次开发-QT-C++ 可用Demo(一)

发布时间:2024-11-26 14:37:50 人气:

?Dalsa线扫描相机的二次开发,因为官方只有MFC和命令行版本的,我需要使用QT进行开发,于是自己花时间研究,然后写了一个,效果如下:

? ? ? ? 可能GIF动图有点模糊,在图片中,上面为实时画面,我使用的是4096*128分辨率,然后使用手机的闪光灯在相机旁边摇晃,加上没有调焦调距,效果确实是如此。下面是实时拼接的图,将结果缩小旋转90度,然后依次拼接起来,就是下面拼接图片的效果。

? ? ? ? 拼接图的右边那个黑框是截图时候参数没有设置好,后面已经改好了。

1. 大家参考的时候,记得对应自己的相机参数,包括:品牌、灰度/彩色、相机实际分辨率、网口/采集卡相机、软件版本等信息。

2. 我的版本是:

? ? ? ? 相机:HL-FM 采集卡版本灰度相机

SDK版本为:SaperaLTSDKSetup_8.60、

采集卡驱动为:xtium2-clhs_fx8lc_110010122、

? ? ? ? QT版本:5.12

? ? ? ? 编译器:MSVC 2017 64bit

? ? ? ? 当然,实际只要版本差不多就行,我后面会提供我这个版本的软件驱动。

3. 我自己开发的步骤为:

  • 安装相机驱动和SDK?
  • 打开官方的 “Sapera CamExpert” 软件
  • 根据压缩包里面的 “HL-FM相机使用说明” 文件,进行相关配置,记得分辨率要调为自己的分辨率,不要完全按照文档来。点击 grab,拿着灯光在相机前晃,如果可以显示画面就正常。
  • 如上所示,就表示正常,因为我是灰度相机,就选择第一个了。
  • 点击这个软件的左上角 “file”? “save? as ” ,然后保存,如下图所示:
  • 上面的路径要记住,如果记不住,就点击 “Select Custom Directory”,自己保存在其他位置。这个很重要!!! 因为程序会使用这个配置文件,你必须记住路径,或者放在容易找到的路径才行!!!
  • 关闭软件(一定要关闭,因为会占用端口),打开 “ C:\Program Files\Teledyne DALSA\Sapera” ,这个是官方软件路径。会发现这么多文件夹。下面是解释:
  • 如果是MFC开发者,那爽了,直接参考和复制Demos文件夹的代码即可。如果是QT的开发者,一般来说,开发起来就很有难度了,因为里面有很多很多的坑,至少我之前在其他地方下载的代码还没跑起来过,要么就需要配置opencv,那样太麻烦了。
  • (想偷懒的,下面的步骤可以不看,直接去看我的代码即可)
  • 我自己首先是参考了'Examples'文件夹的 'Class' 的 'GrabConsole' 示例,记得需要使用 VS2017和2017之前的版本,之后的版本很容易出问题。
  • 在官方软件路径的CamFiles文件夹里面新建User,将刚刚保存的配置文件放进去。
  • 看一下?'Examples'文件夹的“Binaries”文件夹里面的 “GrabCPP.exe”,运行一下,看一下官方案例的效果。需要依次输入1、 1 、1,就会弹出窗口,实时显示画面。
  • 我最开始运行官方的Demo,发现跑不起来,重装了一次就可以了。然后移植到QT,发现一样的代码,就是跑不起来,经过多次修改,测试需要MSVC 2017编译器。这里面坑很多,想尝试的可以自己去踩一遍这些坑,但是呢,我把很多需要的坑已经踩完了,大家也可以直接参考后面的代码即可。

4. 创建QT测试项目

  • 注意:这里的Demo是在main文件里面的,只是一个测试使用的。提供大家以后测试参考
  • 想偷懒的,可以跳过这一步,去看下面已经初步封装好的代码。
  • 将官方软件路径里面的这三个文件夹:Classes、Include、Lib文件夹,直接复制拖进项目文件夹里面来,然后配置好pro路径。
  • pro文件代码参考:就是加入main.cpp和那三个文件夹,其他的测试过程可不加。
  •  

  • 测试Demo源码:
  •  

    其中?ccf_path? 路径需要配置为自己刚刚保存的路径,然后路径中需要使用两个\ 来分割。m_Buffers->Save(savename, "-format bmp"); 这行代码我注释起来了,因为会保存文件,想看保存文件的,可以打开注释,路径在D盘的test/bmp路径下,记得别跑太长时间,因为几秒钟保存的图片文件就有好几个G那么大了。

  • 如果可以跑,大家可以使用这个代码来改写为自己的类。下面是我自己初步封装的QT的线程类,大家也可以修改。

5. 我自己封装的线程类:

? ? ? ? 1. 新建 SapCameraDev 的类,继承自 Qthread,头文件源码如下:

 

? ? ? ? 2. SapCameraDev 的cpp文件源码如下:

 

? ? ? ? 3. 为了更好的展示,我自己新建了一个界面:

? ? ? ? 4. mainwindow.h 源码:

 

? ? ? ? 5. mainwindow.cpp源码:

 

OK,撒花完结!!!

其实源码95%都已经给你们放出来了,有能力的自己已经可以做出来了,毕竟当时踩了很多坑,而且当时下载别人的案例,也花了一点小钱,而且他们的还运行不起来,我把我自己的源码放出来,收回一点成本可以吧。不求大富大贵,最起码回本啊,兄弟们,还望理解。

? ? ? ? 额,不知道为什么,必须设置为免费的,还是0积分,晕死,我先看看如何设置再分享出来。

相关资源链接:

【免费】Dalsa线扫描相机资源分享(一)-安装驱动和配置说明资源-CSDN文库

【免费】Dalsa线扫描相机资源分享(二)-开发文档资源-CSDN文库

【免费】Dalsa线扫描相机资源分享(三)-简单的QT测试程序,未封装类资源-CSDN文库

参考文章:

Dalsa线扫相机SDK二次开发_dalsa相机二次开发-CSDN博客

产品名称二十二
产品名称十九
产品名称十五

在线留言

平台注册入口