前两天给新入职的同事提供培训材料,写了一个简单的Halcon/C#混合编程实例。
该实例可以解决Halcon在VS中的控件hControlWindow中,在UI交互时由于窗口长宽比例与所读取的原始图像比例不一致所导致的拉伸现象。同时给出形状匹配定位的功能。
该实例是一个较完整的算法-软件-交互实例。除了图像采集之外,已含有从Halcon算法到功能实现-UI交互-结果展示的完整逻辑。
可以通过以下链接下载源码,包括halcon文件和C#完整代码: https://download.csdn.net/download/horsee/10649954
程序展示大致如下:
1. 读取一张图片并显示
注意这张图片显示在窗口中右侧黑色的区域不是图片本身的,而是因为窗口的长宽比与图片的长宽比不一致,本例中采取了放缩处理来保证正确的长宽比;
2. 利用对象的形状特征制作模板
制作好的模板保存在bin/debug/Templete.shm之中
3. 立即返回模板中所找到的对象信息
如图显示给出了形状模板在图像中的中心点位置Row Column,模板的旋转角度以及形状匹配的得分,找到的形状轮廓在图中以红色轮廓线显示:
4. 在另一幅移动了对象位置的图片中定位该对象
如图所示找到的轮廓是以绿色轮廓线显示:
5. 如果没有找到对象
则将所有的定位信息赋值为-1,如图中采用了三角形空洞作为形状模板,则在某幅图片中无法定位;
程序要点:
1. 关于长宽比放缩,已在另一博文中作过描述: https://blog.csdn.net/horsee/article/details/80136622
此处需要注意的是,在UI中显示找到的轮廓线时,也需要通过hv_rate参数进行尺寸的放缩,具体实现方式详见资源代码;
2. 查找形状模板用到了Halcon中的create_shape_model算子和find_shape_model算子,形状模板文件为循环覆盖的方式存在在debug文件夹之下。
|
请发表评论