Halcon學習第一天(根據霍夫變換在圖像中找直線)


這是學習的第一個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)

}

還是很多不懂不理解

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM