Halcon 图像分割(粘连物体循环分割)
生活随笔
收集整理的這篇文章主要介紹了
Halcon 图像分割(粘连物体循环分割)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
資源
鏈接:https://pan.baidu.com/s/14rj-BKH-7wtF-DCIrTm17w
提取碼:re93
圖片
代碼
* 1.讀取并顯示圖片 ************************************* dev_close_window () read_image (Image, './img.bmp') get_image_size (Image, Width, Height) dev_open_window_fit_size (0, 0, Width, Height, -1, -1, WindowHandle) dev_display (Image)set_display_font (WindowHandle, 16, 'mono', 'true', 'false') dev_set_draw ('margin') dev_set_line_width (3)* 2.初步分割 ************************************* threshold (Image, Region, 0, 100) * 腐蝕運算 erosion_circle (Region, RegionErosion, 4.5) * 開運算 opening_circle (RegionErosion, RegionOpening, 1.5) * 連通域分析 connection (RegionOpening, ConnectedRegions)* 3.初步分割篩選 ************************************* * 連通域篩選 select_shape (ConnectedRegions, SelectedRegions, ['area','rectangularity'], 'and', [100,0.5], [700,1]) * 產品區域膨脹 dilation_circle (SelectedRegions, RegionDilation, 4.5) * 減去已經篩選的產品 difference (ConnectedRegions, RegionDilation, SelectedRegions1)* 最終結果變量 gen_empty_obj (ObjectsConcat) concat_obj (RegionDilation, ObjectsConcat, ObjectsConcat)* 4.循環分割篩選 ************************************* for Index := 1 to 7 by 1* a.粘連產品中間區域 ************************************** 粘連產品凸性處理shape_trans (SelectedRegions1, RegionTrans, 'convex')* 凸性區域 - 粘連區域difference (RegionTrans, SelectedRegions1, RegionDifference)* 去除小區域opening_circle (RegionDifference, RegionOpening1, 3.5)* 鏈接中間區域closing_circle (RegionOpening1, RegionClosing, 30.5)* 粘連產品減去中間區域difference (SelectedRegions1, RegionClosing, RegionDifference1)* 連通域分析connection (RegionDifference1, ConnectedRegions1)* b.粘連產品 分割后篩選 ************************************** 篩選分割后 單個產品select_shape (ConnectedRegions1, SelectedRegions2, 'area', 'and', 100, 700)* 膨脹 恢復原始區域dilation_circle (SelectedRegions2, RegionDilation1, 4.5)* 單個產品添加到結果中去concat_obj (ObjectsConcat, RegionDilation1, ObjectsConcat)* c.去除分割后的產品 再次篩選產品 ************************************** 去除分割后的產品difference (SelectedRegions1, RegionDilation1, RegionDifference2)* 再次篩選分割的產品select_shape (RegionDifference2, SelectedRegions3, 'area', 'and', 100, 700)* 膨脹dilation_circle (SelectedRegions3, RegionDilation2, 4.5)* 分割后的產品 添加到結果中去concat_obj (ObjectsConcat, RegionDilation2, ObjectsConcat)* d.仍然粘連的產品 進入下次循環 *************************************select_shape (RegionDifference2, SelectedRegions1, 'area', 'and', 700, 99999)* 統計仍然粘連的產品count_obj (SelectedRegions1, Number)* 退出循環if(Number == 0) breakendif endfor* 6.篩選與中心交叉點計算 ***************************************** select_shape (ObjectsConcat, SelectedRegions4, 'area', 'and', 200, 99999) area_center (SelectedRegions4, Area, Row, Column) gen_cross_contour_xld (Cross, Row, Column, 15, 0.785398) count_obj (ObjectsConcat, Number1) * 5.顯示結果 ***************************************** dev_display (Image) * dev_display (ObjectsConcat) disp_message (WindowHandle, '產品個數:' + Number1 $'.2f', 'window', 10, 10, 'black', 'true') dev_display (Cross)結果
總結
以上是生活随笔為你收集整理的Halcon 图像分割(粘连物体循环分割)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用阿里大于实现发送短信(JAVA版)
- 下一篇: 小谈导数、梯度和极值