海康相机SDK+halcon17(64位)+MFC+VS(64位)联合开发遇到的问题(在使用GenImage3Extern将RGB数据转换为halcon图像时出现异常情况处理)

14 篇文章 40 订阅
11 篇文章 6 订阅

这几天遇到了问题就是在MFC中开发SDK,遇到了问题是:

           1.回调函数中的原始图像没数据,但是图像的信息是有的

这个问题的主要原因在于海康相机的默认输出数据的格式是 YUYV ,并不是RGB的,因此需要设置一下即可,两种方式:

    1.在海康相机的客户端进行修改即可:

    2.使用 MV_CC_SetPixelFormat 进行设置,具体设置如下:

//设置相机图像的像素格式
unsigned int enValue = PixelType_Gvsp_RGB8_Packed;
nRet = MV_CC_SetPixelFormat(m_handle, enValue);
if (MV_OK != nRet)
{
printf ("error: SetPixelFormat fail [%x]\n", nRet);
return;
}

其实这是海康相机开发手册里面的代码,大家可以好好看看里面的代码。这个问题解决后在转换为halcon类型的图像时出问题了。

           2.进行halcon图像中转换时,出现了异常,没报错,如何解决?

这个问题的出现情况是使用了halcon17  64位版本造成的,在使用GenImage3Extern()函数时会有一个警告是指针截断,如下:

这个警告不可忽视,数据产生了截断了,这个截断是导致转换异常的根本所在,具体原因是:

   确保传递的是存储图像数据的实际内存地址,而不是指针变量的地址。必须注意不要截断64位体系结构上的64位指针

大家去halcon的帮助文档去搜索这个算子gen_image3_extern (Operator),里面有详细的描述。这个算子经过导出c++以后就是这个GenImage3Extern()函数。

如何解决呢?很简单,把halcon17  64位换成32位,不换行不行,我目前没找到更好的解决指针截断的方法,如果有人找到了,麻烦通知我一下,这里先谢过了呀。

换过版本后程序完美运行,只是显示有点问题,但是问题不大, 综合来看,装软件尽量装32位的吧,国内的东西都还停留在32位的居多,尤其要和硬件底层打交道的,VS也不要用太高的版本,你会发现厂家的VS大多数都是2015或者是2010。   

    这里基本结束了,后面继续开发,看看还会遇到哪些问题,然后在总结

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Qt是一款跨平台的应用程序开发框架,它提供了丰富的功能和工具,用于开发图形化用户界面和应用程序功能。Qt具有良好的可移植性,可以在多个操作系统上运行,并且具有完善的文档和社区支持。 海康SDK是指海康威视公司提供的软件开发工具包。海康SDK包含了海康威视公司的摄像头、监控设备等产品的相关API,可以帮助开发者快速集成和使用这些产品。海康SDK提供了丰富的功能和接口,包括视频流播放、图像处理、事件处理等,可以满足不同应用场景的需求。 Halcon是一款功能强大的机器视觉库,由德国MVTec公司开发。Halcon提供了丰富的图像处理和分析功能,包括图像采集、图像处理图像匹配等。Halcon支持多种编程语言和操作系统,并且具有优秀的性能和可靠性。Halcon在机器视觉领域被广泛应用于工业自动化、质量检测、医疗影像等领域。 Qt、海康SDKHalcon可以结合起来使用,实现更加强大的功能和应用。Qt提供了友好的界面和交互方式,可以方便地集成和调用海康SDKHalcon的功能。例如,可以使用Qt开发监控系统的图形界面,通过调用海康SDK获取监控视频流,并使用Halcon图像进行处理和分析。这样的组合可以为用户提供更加灵活和便捷的使用体验,满足各种应用需求。 综上所述,Qt、海康SDKHalcon是三个不同的软件开发工具,它们各自具有特定的功能和用途。通过结合使用,可以实现更加强大和丰富的应用程序开发。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值