失败笔记本-HALCON篇-005
项目场景:
OK,熊弟们,这篇我们来研究一下ROI区域,也就是region区域的一些基本用法,
依旧是跟随大佬的脚步:halcon入门教程4_ROI区域(Region)
要实现基本的roi设置和region区域选择,connection和合并。
1.roi设置
步骤:
roi的设置其实很方便的,丝滑小连招之后呢直接用工具画框然后再reduce就行:
- 算子用的是gen_rectangle1 (),如果用gen_rectangle2()算子的话是可以做一个斜着的矩形框
- **gen_rectangle2()**算子会多一个参数:rad(-33.027),这是一个将角度转换为弧度的函数。
- 然后再用reduce_domain() 算子,就会把roi内的区域保留下来,区域外的部分截取掉。
2.region的区域合并
union1算子
- 首先丝滑小连招
- 然后connection,select_shape提取
- 可以使用 count_obj () 算子计算当前区域的数量
- 使用 union1 () 算子合并当前区域
代码如下:
read_image (Image, 'printer_chip/printer_chip_01')
rgb1_to_gray (Image, GrayImage)
threshold (Image, Regions, 119, 255)
connection (Regions, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 29000, 32000)
count_obj (SelectedRegions, Number)
union1 (SelectedRegions, RegionUnion)
效果如下:
union2算子
- 用union2算子的话其实是两两合并的,将参数中前两个region合并放入第三个参数中
- 所以我们要先创建一个空的region
代码如下:
gen_empty_region (EmptyRegion)
for i:=1 to Number by 1
select_obj (SelectedRegions, ObjectSelected, i)
union2 (ObjectSelected, EmptyRegion, EmptyRegion)
endfor
总结:
在005中,用到了以下算子:
gen_rectangle1 ()
reduce_domain ()
count_obj ()
union1 ()
union2 ()
gen_empty_region ()