背景

halcon是传统算法的代表, 同时也拥有着深度学习的模块,之前在我的很多文章中也有着介绍.
不过在对比yoloV8之后, 发现halcon(版本 23.11)的深度学习, 全方面不如yolov8. 不管是训练速度,推理速度,异或是推理效果,yolov8都吊打halcon深度学习. 所以, 我想着结合两者的强项, 传统算法使用halcon,深度学习使用yolov8.来解决实际项目中遇到的问题. halcon可以负责预处理和后处理, yolo负责中间的推理过程! 于是,我遇到的第一个问题出现了,图片类型转换.

图片类型转换

yolov8 这边,我使用的是微软提供的推理引擎, 所以对应yolo这边而言的图片处理, 我使用的是 C# 中图片处理的类Bitmap, 而在Halcon中
图片类型是HImage.
目前,我这边的处理过程为, 先通过推理引擎(此时一般是直接指定图片路径即可),得到推理结果 比如矩形框的位置等信息,让后通过Bitmap类对图片进行处理, 把矩形框都标记好位置. 然后将Bitmap转换成HImage, 再通过halcon 图片控件加载HImage.
先看看原图效果.
[halcon集成yolo] halcon集成yolo图片转换篇-LMLPHP

形状失真

halcon 提供一个算子 HOperatorSet.GenImageInterleaved 可以将图片的内存数据,转换为halcon的图片对象.

public HObject
07-29 13:32