Halcon橡皮擦功能實現減小模板匹配特徵

功能:dom

一、按住鼠標左鍵拖動鼠標進行擦除工做,鬆開鼠標中止擦除code

二、繼續按住鼠標左鍵重複功能1,鼠標右鍵退出blog

這裏使用到的halcon是17.12版本的對應同版本的HDevelop,在API中就找到兩個鼠標事件:事件

get_mbutton 和 get_mpositionip

前者等待鼠標按下,後者無需等待直接監聽鼠標而且都是一次觸發一次返回,這樣一來實現上面的功能就要撓一撓腦袋了。ci

 

halcon實現:rem

read_image (Image, 'printer_chip/printer_chip_01')
*選擇區域
draw_rectangle1 (200000, Row1, Column1, Row2, Column2)
gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)
reduce_domain (Image, Rectangle, ImageReduced)
dev_clear_window ()
dev_display (ImageReduced)
**橡皮擦功能,特徵屏蔽***********************************
*橡皮擦大小
EraserSize:=10
*橡皮擦形狀
EraserType:='rectangle'
gen_empty_obj(region_removeds)
*橡皮擦路過的座標集
Rows := []
Cols := []
*擦除工做
Button:=0
set_display_font (200000, 26, 'mono', 'true', 'false')
disp_message (200000, '按下鼠標進行擦除功能,鬆開鼠標將結束', 'window', 12, 12, 'red', 'false')
while (Button == 0)
    get_mbutton (200000, Row, Column, Button)
    while (Button == 1)
        get_mposition (200000, Row, Column, Button)
        Rows := [Rows,Row]
        Cols := [Cols,Column]
        *生成橡皮擦擦過的區域
        if(EraserType=='rectangle')
            gen_rectangle2 (Eraser,Row, Column,0, EraserSize,EraserSize)
        else
            gen_circle (Eraser, Row, Column, EraserSize)
        endif
        *橡皮擦區域合併
        union2(region_removeds,Eraser,region_removeds)
    endwhile
endwhile
*區域相減
difference (ImageReduced, region_removeds, RegionDifference)
reduce_domain (ImageReduced, RegionDifference, ImageReduced)
 
**建立模板******************************************************
create_shape_model (ImageReduced, 'auto', -0.39, 0.79, 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID)
find_shape_model (Image, ModelID, rad(-180), rad(180), 0.5, 1, 0.5, 'least_squares', 0, 0.9, Row, Column, Angle, Score)
*獲取模板輪廓
get_shape_model_contours (ModelContours, ModelID, 1)
dev_clear_window ()
dev_display (Image)
dev_set_line_width (2)
*將模板映射到目標上
vector_angle_to_rigid (0, 0, 0, Row, Column, Angle, HomMat2D)
affine_trans_contour_xld (ModelContours, ContoursAffinTrans, HomMat2D)

結果反饋(以圖中二維碼區域爲例):get

沒有擦除過的模板特徵反饋:it

橡皮擦功能:io

使用了橡皮擦功能的反饋:

相關文章
相關標籤/搜索