Halcon 仿射變換例子

 

*讀取張圖片

read_image (Image, 'C:/Users/Administrator/Desktop/2.png')

*設置模板區域
draw_rectangle1 (3600, ModelRow1, ModelColumn1, ModelRow2, ModelColumn2)
gen_rectangle1 (ModelRect, ModelRow1, ModelColumn1, ModelRow2, ModelColumn2)

*設置測試區域
draw_rectangle2 (3600, TRow, TColumn, TPhi, TLength1, TLength2)

*設置gen_rectangle2 函數,參數是矩形的中心點,長半徑,寬半徑。
gen_rectangle2 (Rectangle, TRow, TColumn, TPhi, TLength1, TLength2)

*
reduce_domain (Image, ModelRect, ImageReduced)

*查找模板矩形中心點
area_center (ModelRect, Area, CRow, CColumn)

*模板中心點和測試中心點的距離
CTRow:=TRow-CRow
CTColumn:=TColumn-CColumn

*建立模板

create_shape_model (ImageReduced, 'auto', rad(0), rad(360), 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID)
dev_clear_window ()
get_shape_model_contours (ImageReduced, ModelID, 1)
dev_display (ImageReduced)

*讀取圖片2
read_image (Image1, 'C:/Users/Administrator/Desktop/4.png')

*查找模板
find_shape_model (Image1, ModelID, rad(0), rad(360), 0.4, 0, 0.5, 'least_squares', 0, 0.9, Row, Column, Angle, Score)

*初始化仿射矩陣
hom_mat2d_identity (HomMat2DIdentity)

*仿射矩陣偏移
hom_mat2d_translate (HomMat2DIdentity, Row, Column, HomMat2DTranslate)
hom_mat2d_rotate (HomMat2DTranslate, Angle, Row, Column, HomMat2DRotate)

*仿射xld
affine_trans_contour_xld (ImageReduced, ShapeModelTrans, HomMat2DRotate)
dev_display (ShapeModelTrans)

*仿射測試點
affine_trans_pixel (HomMat2DRotate, CTRow, CTColumn, RowTrans, ColTrans)
gen_rectangle2 (Rectangle1, RowTrans, ColTrans, Angle, TLength1, TLength2)
dev_display (Rectangle1)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章