Halcon初学者知识 【11】自定义算子和应用实例
生活随笔
收集整理的這篇文章主要介紹了
Halcon初学者知识 【11】自定义算子和应用实例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 算子的約定
halcon的自定義算子,包含如下格式:
算子名稱 (圖象變量-輸入 : 圖象變量-輸出: 控制變量-輸入 : 控制變量-輸出 )
要點是:
- 在HALCON的所有算子(系統算子,自定義算子),其變量的種類有四種:圖標輸入參數、圖標輸出參數、控制輸入參數、控制輸出參數。
- 變量的位置順序、種類順序是固定的。
- 任意某種變量可以空缺。
- Halcon的圖標參數包括:Image、Region、xld等圖象的要素。
- 控制參數包括:Tuple、整數【輸入可以是變量、常量、表達式】。
- ? 若看到“: : : ”符號,表明分割這四類變量的分隔符號。
2 舉個例子
threshold(),它是這樣描述的:
threshold(Image : Region : MinGray, MaxGray : )
- 第一個冒號前面有個 Image,這是第一類參數,圖標輸入參數
- 第二個冒號前面的是Region,這是第二類,圖標輸出參數
- 第三個冒號前面 是MinGray, MaxGray,告訴你有兩個第三類參數,控制輸入參數
- 沒有第四類參數
3 自定義算子例子?
如果輸入一幅圖象Image,要把指定區域region1中的部分,且挖掉region2,region3,region4區域后,保留的余下部分返回。(假定regin2,regin3,regin4存在一個tuple中)
函數名稱:getHoledImage
分析:圖標輸入Image,region1, ? subRegions? 內部包含【regin2,regin3,regin4】
? ? ? ? ?? 圖標輸出:holeImage
? ? ? ? ?? 控制輸入:
? ? ? ? ?? 控制輸出:無
其中subRegions是Tuple類型,內部包含圖象區域【regin2,regin3,regin4】
4 編寫Halcon用戶算子
見下圖
然后寫函數和參數:
代碼編寫:
至此,自定義halcon算子完成。一般需要保存:
5 測試代碼
如何調用測試代碼,以下將交待如何調用這個函數:
read_image(Image,'PPQP') get_image_size(Image, Width, Height) dev_open_window_fit_image(Image, 0, 0, -1, -1, WindowHandle) disp_image(Image, WindowHandle) stop()gen_region_runs (ROI_all, [73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,91,92,92,93,93,94,94,95,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331], [266,265,259,247,219,216,210,207,203,202,200,198,197,196,195,191,190,188,176,180,175,179,173,178,173,177,170,176,169,167,164,162,162,161,161,161,157,157,156,154,151,150,149,149,149,148,148,147,147,146,144,144,143,143,143,143,142,141,140,139,138,138,137,137,137,137,137,136,136,135,135,135,134,134,134,133,133,133,133,133,133,132,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,132,132,133,133,133,135,135,135,136,137,138,138,138,139,139,140,141,142,143,144,145,146,146,147,148,149,150,151,152,152,153,154,155,157,157,158,161,161,162,164,165,166,167,168,169,171,173,174,176,177,178,179,181,182,183,184,186,187,188,192,193,195,198,202,204,205,206,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,209,210,210,211,211,212,212,212,212,213,213,213,213,213,213,213,213,213,214,214,215,214,214,214,246], [277,280,282,284,286,286,286,287,290,291,293,295,295,296,299,301,302,306,176,307,176,309,175,311,174,312,174,313,314,315,315,316,317,317,317,318,319,320,321,322,322,323,324,324,324,325,325,325,325,328,329,329,330,330,330,330,331,333,334,335,335,336,338,339,339,339,340,341,342,342,343,343,344,345,345,346,346,347,347,348,348,348,348,348,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,349,348,348,348,348,348,347,346,345,344,344,343,343,342,341,341,341,340,339,338,337,336,335,334,332,332,332,330,330,330,329,329,328,327,327,325,324,323,323,323,322,322,321,321,320,319,316,315,315,315,313,311,311,310,305,305,304,302,301,300,297,296,294,290,287,286,284,283,284,284,285,285,286,287,287,288,289,289,289,291,291,291,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,292,291,291,290,290,290,290,290,289,288,287,287,286,286,285,285,281,274]) gen_contour_region_xld (ROI_all, xld_all, 'border') disp_image(Image, WindowHandle) stop() gen_rectangle2 (ROI_SUB0, 179.5, 243.251, rad(3.05474), 67.5549, 52.2097) gen_contour_region_xld (ROI_SUB0, xld_sub0, 'border') disp_image(Image, WindowHandle) stop()gen_circle (ROI_SUB1, 253.3, 247.749, 8.86308) gen_contour_region_xld (ROI_SUB1, xld_sub1, 'border') disp_image(Image, WindowHandle) stop()gen_circle (ROI_SUB2, 312.7, 249.548, 7.0267) gen_contour_region_xld (ROI_SUB2, xld_sub2, 'border') disp_image(Image, WindowHandle)dev_clear_obj (ROI_all) dev_clear_obj (ROI_SUB0) dev_clear_obj (ROI_SUB1) dev_clear_obj (ROI_SUB2) stop()gen_region_contour_xld ( xld_all, ROI_all, 'filled') gen_region_contour_xld ( xld_sub0, ROI_SUB0, 'filled') gen_region_contour_xld ( xld_sub1, ROI_SUB1, 'filled') gen_region_contour_xld ( xld_sub2, ROI_SUB2, 'filled')concat_obj(ROI_SUB0, ROI_SUB1, ObjectsConcat ) concat_obj(ObjectsConcat, ROI_SUB1, ObjectsConcat ) concat_obj(ObjectsConcat, ROI_SUB2, ObjectsConcat )GetLeakRigion (Image, ROI_all, ObjectsConcat, leackedRegion)crop_domain(leackedRegion,leakedImage)disp_image(leakedImage,WindowHandle)6 實驗結果:
1)原圖
四個區域:
提取結果:
總結
以上是生活随笔為你收集整理的Halcon初学者知识 【11】自定义算子和应用实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021-02-04 Halcon初学者
- 下一篇: Halcon知识:如何用mfc显示hal