行远-自迩

导航

模板匹配 -擦除功能

Halcon开发一个类似于康耐视橡皮功能:

本质就是抠图,减法

union2(Region1, Region2 : RegionUnion : : )

union2()——将两个区域合并成一个整体,仅限两个
函数原型:union2(Region1(输入), Region2(输入) : RegionUnion(输出) : : )

功能:将Region2 和Region1元组内的区域合并成一个独立的区域保存于RegionUnion 。把第二个参数Region2里的所有区域合并,然后将合并后的区域分别与Region1中的每一个区域进行合并,然后保存到RegionUnion 中。最后,RegionUnion 元素个数与Region1元素个数相同。

参数:
Region1 (input_object) ——要与Region2中的所有区域的并集计算的区域
Region2 (input_object) ——要添加到Region1的区域
RegionUnion (output_object) ——最终得到的区域
要素数::RegionUnion == Region1

difference(Region, Sub : RegionDifference : : )

*先计算两个区域的交集
*1.如果有交集,结果为第一个区域减去交集
*2.如果没有交集,结果为第一个区域

 

下面从网上抄下来的一段代码

 

 1 read_image (Image, 'printer_chip/printer_chip_01')
 2 *选择区域
 3 draw_rectangle1 (200000, Row1, Column1, Row2, Column2)
 4 gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)
 5 reduce_domain (Image, Rectangle, ImageReduced)
 6 dev_clear_window ()
 7 dev_display (ImageReduced)
 8 **橡皮擦功能,特征屏蔽***********************************
 9 *橡皮擦大小
10 EraserSize:=10
11 *橡皮擦形状
12 EraserType:='rectangle'
13 gen_empty_obj(region_removeds)
14 *橡皮擦路过的坐标集
15 Rows := []
16 Cols := []
17 *擦除工作
18 Button:=0
19 set_display_font (200000, 26, 'mono', 'true', 'false')
20 disp_message (200000, '按下鼠标进行擦除功能,松开鼠标将结束', 'window', 12, 12, 'red', 'false')
21 while (Button == 0)
22     get_mbutton (200000, Row, Column, Button)
23     while (Button == 1)
24         get_mposition (200000, Row, Column, Button)
25         Rows := [Rows,Row]
26         Cols := [Cols,Column]
27         *生成橡皮擦擦过的区域
28         if(EraserType=='rectangle')
29             gen_rectangle2 (Eraser,Row, Column,0, EraserSize,EraserSize)
30         else
31             gen_circle (Eraser, Row, Column, EraserSize)
32         endif
33         *橡皮擦区域合并
34         union2(region_removeds,Eraser,region_removeds)
35     endwhile
36 endwhile
37 *区域相减
38 difference (ImageReduced, region_removeds, RegionDifference)
39 reduce_domain (ImageReduced, RegionDifference, ImageReduced)
40  
41 **创建模板******************************************************
42 create_shape_model (ImageReduced, 'auto', -0.39, 0.79, 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID)
43 find_shape_model (Image, ModelID, rad(-180), rad(180), 0.5, 1, 0.5, 'least_squares', 0, 0.9, Row, Column, Angle, Score)
44 *获取模板轮廓
45 get_shape_model_contours (ModelContours, ModelID, 1)
46 dev_clear_window ()
47 dev_display (Image)
48 dev_set_line_width (2)
49 *将模板映射到目标上
50 vector_angle_to_rigid (0, 0, 0, Row, Column, Angle, HomMat2D)
51 affine_trans_contour_xld (ModelContours, ContoursAffinTrans, HomMat2D)
View Code

 

posted on 2022-04-06 15:48  行远-自迩  阅读(429)  评论(0编辑  收藏  举报