這是學習的第一個Halcon視覺案例:霍夫變換在圖像中找曲線
由於之前了解到的視覺是Ni Vision,對於Halcon也只是了解,今天從第一個例子作為入門。附上代碼:
{
*讀取一張圖片
read_image (Image, 'C:/Users/58937/Desktop/2222.png')
*讀取圖片長寬
get_image_size(Image,width,height) *這里讀取當前內存圖片Image的長寬
*打開一個窗口
dev_open_window (0, 0, width, height, 'black', WindowHandle) *這里新建一個背景顏色黑色的窗口
*根據坐標剪切矩形圖像
rectangle1_domain (Image, ImageReduced, 76, 50, 1000, 1000) *這里是根據坐標裁剪圖片,我試了要自己修改坐標
*尋找圖像中矩形邊緣
sobel_amp (ImageReduced, EdgeAmplitude, 'sum_abs', 3) *這里新建一個背景顏色黑色的圖像窗口(這里得到的效果是當前圖像里面矩形邊緣,相當於同心的兩個矩形)
*設置輸出對象顏色
dev_set_color('red') *這里設置里面對象的顏色
*對上面獲取的邊緣圖像進行閾值操作 *閾值的作用:得到一張對比度不同的黑白圖像
threshold(EdgeAmplitude,Region,10,255)
*對閾值后的區域聯通處理
connection(Region,ConnectedRegions) *這樣操作后圖片中矩形邊緣的兩個同心矩形變成且可以一次被選中
*根據面積過濾出團中心矩形區域
select_shape(ConnectedRegions,SelectedRegions,'area','and',250,99999) *這樣操作后圖片中矩形邊緣的兩個同心矩形可以單獨被選
*霍夫變換尋找區域中的直線
hough_lines(SelectedRegions,4,50,5,5,Angle, Dist) *通過霍夫變換(就是根據Y=KX+b,采用Y和X的值生成的不同直線,這些直線都會有一個交點)這樣就會有四個交點,也就是矩形的四個點
*設置輸出對象顏色
dev_set_color('blue') *將所有直線顏色改為藍色
*將直線轉換為區域
gen_region_hline(Regions,Angle, Dist) *一個對象的輪廓(contour)作為鏈式碼。
*根據方向特征來過濾想要的直線
select_shape(Regions,SelectedRegions1,'orientation','and',1.5,1.6) *篩選指定方向的直線
select_shape(Regions,SelectedRegions2,'orientation','and',0,0.1)
*顯示圖像和結果直線
dev_display(Image) *顯示圖片
dev_display(SelectedRegions1) *顯示篩選方向的直線
dev_display(SelectedRegions2)
}
還是很多不懂不理解