Halcon基于形狀匹配的人臉追蹤
*打開攝像頭句柄AcqHandle
open_framegrabber ('DirectShow', 1, 1, 0, 0, 0, 0, 'default', 8, 'rgb', -1, 'false', 'default', '[0] USB2.0 HD UVC WebCam', 0, -1, AcqHandle)
*從攝像頭抓取一張圖片
grab_image (Image, AcqHandle)
*抓完關閉攝像頭
close_framegrabber (AcqHandle)
dev_close_window ()
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
*打開一個窗口,尺寸400*400,黑色背景,句柄賦予WindowHandle
dev_set_draw ('margin')
*'margin'只顯示輪廓,'fille'顯示填充
dev_display (Image)
*定義數組顯示提示信息
Message[0] := ' 提 示:'
Message[1] := '右鍵畫面開始創建識別區域,按左鍵結束'
*顯示數組中的提示信息
disp_message (WindowHandle, Message[0], 'window', 12, 12, 'red', 'true')
disp_message (WindowHandle, Message[1], 'window', 48, 12, 'black', 'true')
*繼續提示語顯示
disp_continue_message (WindowHandle, 'black', 'true')
draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)
*鼠標在打開的窗口繪制一個矩形,輸出左上右下點的坐標
gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)
*得到一個矩形
reduce_domain (Image, Rectangle, ImageReduced)
*縮小圖像的域,取image與rectangle的交集,句柄ImageReduced,詣在從原圖上扣取畫出的區域
*執行斷點處
stop()
*準備一個可變形模型,用于平面標定匹配輪廓。
*create_planar_uncalib_deformable_model (ImageReduced, 'auto', [], [], 'auto', 1, [], 'auto', 1, [], 'auto', 'none', 'use_polarity', 'auto', 'auto', [], [], ModelID)
create_planar_uncalib_deformable_model (ImageReduced, 5, rad(0), rad(360), rad(1), 1, 1, 0.02, 1, 1, 0.02, 'none', 'use_polarity', [42,57], 10, [], [], ModelID)
*create_planar_calib_deformable_model_xld(Template::NumLevel,AngleStart,AngleExtent,AngleStep,ScaleRMin,ScaleRMax,ScaleRStep,ScaleCMin,ScaleCMax,ScaleCStep,Optimization,Metric,Contrast,MinContrast,GenParamName,GenParamValue:ModelID
*template輸入模板
*NumLevels 輸入金字塔最大層數(‘auto’(默認), 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
*AngleStart 在最小的旋轉模式(-3.14, -1.57, -0.79, -0.39(默認), -0.20, 0.0),
*AngleExtent 在旋轉的角(6.29, 3.14, 1.57, 0.79(默認), 0.39(輸入條件:大于等于0))
*AngleStep 輸入角度的步長(分辨率)(‘auto’(默認), 0.0175, 0.0349, 0.0524, 0.0698, 0.0873,(輸入條件:(AngleStep > 0) && (AngleStep <= (pi / 16))))
*ScaleRMin行方向上的圖案的最小尺度( 0.5, 0.6, 0.7, 0.8, 0.9, 1.0(默認)(輸入條件:ScaleRMin > 0))
*ScaleRMax 在行方向上的圖案的最大尺度(1.0(默認), 1.1, 1.2, 1.3, 1.4, 1.5(輸入條件:ScaleRMax >= ScaleRMin))
*ScaleRStep 在行方向上的刻度步長(分辨率)(‘auto’(默認), 0.01, 0.02, 0.05, 0.1, 0.15, 0.2,(輸入條件:ScaleCStep > 0))
*ScaleCMin 行方向上的圖案的最小尺度( 0.5, 0.6, 0.7, 0.8, 0.9, 1.0(默認)(輸入條件:ScaleRMin > 0))
*ScaleCStep 在列方向上的刻度步長(分辨率)(‘auto’(默認), 0.01, 0.02, 0.05, 0.1, 0.15, 0.2,(輸入條件:ScaleCStep > 0))
*Optimization 一種用于生成模型的優化方法( ‘auto’(默認), ‘none’, ‘point_reduction_low’, ‘point_reduction_medium’, ‘point_reduction_high’)
*Metric ( ‘use_polarity’, ‘ignore_global_polarity’, ‘ignore_part_polarity’, ‘ignore_local_polarity’,‘ignore_color_polarity’(默認))
*Contrast 搜索圖像中物體的對比度
*MinContrast 搜索圖像中物體的最小對比度(1, 2, 3, 5(默認), 7, 10, 20, 30, 40)
*GenParamName 泛型參數名([],‘part_size’)
*GenParamValue 泛型參數的值( [], ‘small’, ‘medium’, ‘big’)
*ModelID 模型的句柄
get_deformable_model_contours (ModelContours, ModelID, 1)
*返回可變形模型的輪廓表示,輸出:輸入模板輪廓,級別1、2、3、4、5、6、7、8、9、10(Level >= 1)
*測量輸入輪廓的面積與中心值
area_center (Rectangle, ModelRegionArea, RefRow, RefColumn)
*仿射變換
vector_angle_to_rigid (0, 0, 0, RefRow, RefColumn, 0, HomMat2D)
*對XLD輪廓進行任意仿射2D變換
affine_trans_contour_xld (ModelContours, TransContours, HomMat2D)
dev_set_color ('green')
dev_set_draw ('margin')
dev_display (Image)
dev_display (Rectangle)
dev_display (TransContours)
stop ()
open_framegrabber ('DirectShow', 1, 1, 0, 0, 0, 0, 'default', 8, 'rgb', -1, 'false', 'default', '[0] USB2.0 HD UVC WebCam', 0, -1, AcqHandle)
while (true)
grab_image (Image, AcqHandle)
find_planar_uncalib_deformable_model (Image, ModelID, rad(0), rad(360), 1, 1, 1, 1, 0.5, 0, 0.5, 5, 0.75, ['subpixel'], ['least_squares_very_high'], ResultHomMat2D, Score)
dev_display (Image)
for I := 0 to |Score| - 1 by 1
TempHomMat2D := ResultHomMat2D[I*9:I*9+8]
projective_trans_contour_xld (ModelContours, TransContours, TempHomMat2D)
* 將射影變換應用于 XLD 輪廓
dev_set_color ('green')
* dev_display (TransContours)
*xld轉換成region
gen_region_contour_xld (TransContours, Region, 'filled')
union1 (Region, RegionUnion)
*對區域,生成最小外接矩形
smallest_rectangle1 (RegionUnion, Row1, Column1, Row2, Column2)
*使用綠色矩形框,框選匹配結果
* dev_set_color ('green')
disp_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)
*使用紅色勾畫匹配結果輪廓
* stop ()
endfor
endwhile
編輯:黃飛
-
機器視覺
+關注
關注
162文章
4372瀏覽量
120327 -
HALCON
+關注
關注
16文章
64瀏覽量
27226 -
人臉追蹤系統
+關注
關注
0文章
3瀏覽量
6000
原文標題:Halcon基于形狀匹配的人臉追蹤
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論