LabVIEW调用Halcon实现目标检测 - OBB:从环境搭建到源码解读
labview调用halcon实现目标检测-obb,源码,labview2018 64位,halcon22.05,里面包含模型和测视集

最近在搞目标检测相关项目,发现LabVIEW调用Halcon实现目标检测 - OBB(Oriented Bounding Box,定向边界框)这个组合挺有意思,今天就来跟大家分享一下具体实现过程。咱们用的是LabVIEW 2018 64位版本,搭配Halcon 22.05,并且我这里面还包含了训练好的模型和测试集哦。
一、环境搭建
LabVIEW 2018 64位安装
这个安装过程相对常规,按照安装向导一步步来就行,记得在安装过程中留意选择64位版本。安装完成后,可以先打开LabVIEW熟悉一下界面,看看有没有报错啥的。
Halcon 22.05安装
Halcon的安装也不复杂。安装时,注意选择正确的版本路径,安装完成后,它会提供一系列的函数库和工具,这是我们实现目标检测的重要基础。
二、LabVIEW调用Halcon关键代码解读
初始化Halcon环境
在LabVIEW中,要调用Halcon首先得初始化环境。下面这段代码就实现了这个功能:
// 初始化Halcon环境
Call Library Function Node
Library Name: halconcpp.dll
Function Name: HOperatorSet::HDevOpenWindow
Inputs:
0 (width), 0 (height), 100 (row), 100 (column), 0 (parent), "visible", "", WindowHandle
这里通过调用HOperatorSet::HDevOpenWindow函数来打开一个Halcon窗口,为后续显示图像和检测结果做准备。width和height设置为0,表示窗口大小自适应,row和column指定了窗口在屏幕上的起始位置,parent设为0表示该窗口没有父窗口,“visible”表示窗口可见。
加载模型
模型是目标检测的核心,加载模型的代码如下:
// 加载训练好的OBB目标检测模型
Call Library Function Node
Library Name: halconcpp.dll
Function Name: HOperatorSet::ReadClassifier
Inputs:
'path_to_your_model/classifier.hclass', ClassifierHandle
这里通过HOperatorSet::ReadClassifier函数从指定路径读取训练好的模型文件“classifier.hclass”,并将模型句柄存储在ClassifierHandle中,后续检测就靠这个模型句柄来操作了。
图像读取与预处理
// 读取图像
Call Library Function Node
Library Name: halconcpp.dll
Function Name: HOperatorSet::ReadImage
Inputs:
'path_to_your_image/image.jpg', Image
// 图像灰度化
Call Library Function Node
Library Name: halconcpp.dll
Function Name: HOperatorSet::Rgb1ToGray
Inputs:
Image, GrayImage
首先用HOperatorSet::ReadImage函数读取指定路径的图像,接着为了方便后续处理,使用HOperatorSet::Rgb1ToGray函数将彩色图像转换为灰度图像。灰度图像在很多图像处理算法中计算量更小,也更有利于特征提取。
目标检测 - OBB执行
// 执行OBB目标检测
Call Library Function Node
Library Name: halconcpp.dll
Function Name: HOperatorSet::ClassifyObject
Inputs:
GrayImage, ClassifierHandle, 'method_name', 0, [], [], Row, Column, Angle, Score
这里调用HOperatorSet::ClassifyObject函数,输入灰度图像和之前加载好的模型句柄,以及一些检测参数。函数执行后会返回检测到的目标的中心行坐标Row、中心列坐标Column、旋转角度Angle以及置信度分数Score,这些信息可以帮我们确定目标的位置和类别置信度。
结果显示
// 在Halcon窗口显示检测结果
Call Library Function Node
Library Name: halconcpp.dll
Function Name: HOperatorSet::DispObj
Inputs:
Image, WindowHandle
Call Library Function Node
Library Name: halconcpp.dll
Function Name: HOperatorSet::DispMessage
Inputs:
WindowHandle, 'Detected Object', 'window', 12, 12, 'black', 'true'
通过HOperatorSet::DispObj函数在之前打开的Halcon窗口中显示原始图像,然后用HOperatorSet::DispMessage函数在窗口上显示提示信息“Detected Object”,这样就能直观地看到检测结果啦。
三、测试集使用
手头的测试集就派上用场啦。将测试集中不同的图像路径替换到读取图像的代码部分,就能对不同图像进行目标检测 - OBB测试,看看模型的泛化能力如何。多测试一些图像,也能发现模型可能存在的问题,比如误检、漏检等情况,方便进一步优化。

总之,通过LabVIEW调用Halcon实现目标检测 - OBB是个挺有趣且实用的事儿,希望我的分享能帮到大家,大家一起在目标检测的坑里越挖越深吧!
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)