直接貼**
輸入影象
*讀取影象
invert_image(iamge, imageinvert)
*反轉threshold(imageinvert, region1, 40, 255)
*二值化
boundary (region1, regionborder, 'inner')
*取得邊界
*clip_region_rel (regionborder, regionclipped, 5, 5, 5, 5)
*四邊減去一些畫素
dilation_circle (regionborder, regiondilation, 9)
*利用半徑為radius的圓對region進行膨脹運算,輸出
reduce_domain (iamge, regiondilation, imagereduced)
*獲取原圖中膨脹區域的
edges_sub_pix (imagereduced, edges, 'canny', 2, 4, 60)
*canny運算元求出邊緣 輸出的是xdl
select_shape_xld(edges, selectedxld1, 'area', 'and', 320000, 520000)
*xdl通過面積篩選xdl
fit_circle_contour_xld(selectedxld1, 'algebraic', -1, 0, 0, 3, 2, row, column, radius, startphi, endphi, pointorder)
*查詢到的xdl擬合圓
gen_circle_contour_xld (contcircle, row, column, radius, 0, rad(360), 'positive', 1.0)
disp_message(3600, '內輪廓圓心座標:x=' + row + ',y=' + column +',半徑=' + radius +'.', 'window', -1, -1, 'black', 'true')
*輸出資訊row
segment_contours_xld (edges, contourssplit1,'lines_circles',5, 4, 4)
*找到外圍輪廓
select_shape_xld(contourssplit1, selectedxld11, 'area', 'and', 150, 700)
*篩選 條件:長度
count_obj (selectedxld11, number)
*統計數量用於遍歷
for i := 1 to number by 1
select_obj (selectedxld11, objectselected, i)
*遍歷
*篩選if (attrib > 0)
fit_circle_contour_xld (objectselected, 'ahuber', -1, 2, 0, 3, 2, row, column, radius, startphi, endphi, pointorder)
*擬合distance_pp(row,column,195.656, -353.522, distance)
*計算兩點之間距離 計算這個擬合出來的圓心到中心的距離
if(distance>1700)
*判斷gen_circle_contour_xld (contcircle, row, column, radius, 0, rad(360), 'positive', 1.0)
*做圓endif
endif
endfor
結果圖
Halcon學習之擬合圓
對於圓形區域,我們想擬合出它的圓形輪廓或者其他的圓,我們可以用如下的方法擬合出來 1 如果該區域是乙個圓環區域的話,那就執行骨架運算元skeleton得到圓環區域的骨架,然後用gen contours skeleton xld生成骨架輪廓。如果該區域是圓形區域,那麼可以用產生區域輪廓運算元gen c...
halcon測試篇 三點擬合圓弧和圓
已知三個座標點,擬合對應的圓弧和圓。設定圓的寬度 dev set line width 3 dev set draw margin 確定三個點,在視窗上用滑鼠點三個點 draw point 200000 row1,column1 draw point 200000 row2,column2 draw...
空間圓的擬合
通過擬合球面與擬合平面交匯成圓 先擬合出平面,再在平面裡作平面圓的擬合 x c x r u x cos theta v x sin theta y c y r u y cos theta v y sin theta z c z r u z cos theta v z sin theta end ri...