文章目录
- 文章专栏
- 前言
- 自主练习
- 题目
- 输出电路板焊点个数
- 解决方案:正确率:90
文章专栏
我的Halcon开发 CSDN 专栏
Halcon学习 练习项目gitee仓库
CSDN Major 博主Halcon文章推荐
随笔分类 - Halcon入门学习教程
前言
为了更加熟练的掌握Halcon的练习,我之后每个章节都会给我自己出1道小题目,来熟悉halcon代码
自主练习
我们按照halcon教程的三大步开始写
* ----读取图片* ----图像处理* ----打印参数
题目
输出电路板焊点个数
解决方案:正确率:90
难点:明亮对比太差
* ----读取图片
read_image (Image, '../images/circuit_board_5')
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
* 因为是彩色图像,三通道处理
decompose3 (Image, Image_r, Image_g, Image_b)
* 根据结果,R通道的对比最强烈
Image_res := Image_r
* ----图像处理
* 找到亮面
threshold (Image_res, Region, 70, 255)
* [圆形腐蚀],去掉噪点
opening_circle (Region, RegionOpening,5.5)
* [漏点补充]
fill_up_shape (RegionOpening, RegionFillUp, 'area', 1, 100)
* [连通性离散]
connection (RegionFillUp, ConnectedRegions)
* 面积筛选
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 250, 1000)
* 获取中心的坐标
area_center (SelectedRegions, Area, Row, Column)* ----打印参数
dev_display (Image)
dev_display (SelectedRegions)for i := 0 to |Area| -1 by 1disp_message (WindowHandle, i, 'window', Row[i], Column[i], 'black', 'true')
* disp_cross (WindowHandle, Row, Column, 6, 0)
endfor
msg := 'points count' + |Area|
disp_message (WindowHandle, msg, 'window', 12, 12, 'black', 'true')