• 模板匹配 擦除功能 行远


    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
  • 相关阅读:
    JVM堆内存设置和测试
    转:面试题:“你能不能谈谈,java GC是在什么时候,对什么东西,做了什么事情?”
    JVM--标记-清除算法Mark-Sweep
    JVM 垃圾回收器工作原理及使用实例介绍
    BSGS算法(大小步算法)
    Codeforces Round #606 (Div. 2, based on Technocup 2020 Elimination Round 4)
    Codeforces Round #605 (Div. 3)
    POJ 2516Minimum Cost(最小费用流+特判)
    POJ 3155Hard Life(最大密度子图)
    洛谷P2463 [SDOI2008]Sandy的卡片(后缀数组SA + 差分 + 二分答案)
  • 原文地址:https://www.cnblogs.com/xingyuanzier/p/16106814.html
Copyright © 2020-2023  润新知