日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HALCON示例程序count_fish_sticks.hdev鱼棒完整性检测

發布時間:2023/12/10 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HALCON示例程序count_fish_sticks.hdev鱼棒完整性检测 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

HALCON示例程序count_fish_sticks.hdev魚棒完整性檢測

示例程序源碼(加注釋)

  • 關于顯示類函數解釋
    dev_update_off ()
    dev_close_window ()
    read_image (Image, ‘food/fish_stick_package_01’)
    get_image_size (Image, Width, Height)
    dev_open_window (0, 0, Width * .9, Height * .9, ‘black’, WindowHandle)
    set_display_font (WindowHandle, 16, ‘mono’, ‘true’, ‘false’)
    dev_set_draw (‘margin’)
    dev_open_window (0, Width * .9 + 12, 420, 150, ‘black’, GraphicsWindow)
    set_display_font (GraphicsWindow, 16, ‘mono’, ‘true’, ‘false’)
    dev_set_color (‘yellow’)
  • 讀入圖片
    NumImages := 6
    for Index := 1 to NumImages by 1
    read_image (Image, ‘food/fish_stick_package_’ + Index$‘02’)
    • 二值化
      threshold (Image, Region, 100, 255)
    • 使用圓形元素進行閉運算
      closing_circle (Region, RegionClosing, 5)
    • 填充孔洞
      fill_up (RegionClosing, RegionFillUp)
    • 求取區域不想交部分
      difference (RegionFillUp, RegionClosing, RegionDifference)
    • 填充孔洞
      fill_up (RegionDifference, RegionFillUp1)
    • 使用圓形元素進行閉運算
      closing_circle (RegionFillUp1, RegionClosing1, 10)
    • 求取區域的可旋轉的最小外接矩形
      smallest_rectangle2 (RegionClosing1, Row, Column, Phi, Length1, Length2)
      MeasureLength1 := Length1 - 5
    • 生成一個可旋轉矩形框
      gen_rectangle2 (Rectangle, Row, Column, Phi, Length1, 80)
    • gen_measure_rectangle2提取垂直于矩形的直邊。
    • gen_measure_rectangle2(::行坐標,列坐標,角度,矩形長度/2,矩形寬度/2,測量寬度,測量高度,算法:測量句柄)
      gen_measure_rectangle2 (Row, Column, Phi, MeasureLength1, 60, Width, Height, ‘nearest_neighbor’, MeasureHandle)
    • measure_projection - 提取垂直于矩形或環形弧的一維灰度值輪廓。
    • measure_projection(圖片:: 測量句柄:灰度值)
      measure_projection (Image, MeasureHandle, GrayValues)
    • 關閉測量句柄
      close_measure (MeasureHandle)
    • create_funct_1d_array - 從一系列y值創建一個函數。
    • create_funct_1d_array(::: Y值:函數)
      create_funct_1d_array (GrayValues, Function)
    • local_min_max_funct_1d - 計算函數的局部最小點和最大點。
    • local_min_max_funct_1d(::功能,模式,插值:最小,最大)
      local_min_max_funct_1d (Function, ‘plateaus_center’, ‘true’, Minima, Maxima)
    • get_y_value_funct_1d - 返回指定X位置的函數Y的值。
    • get_y_value_funct_1d(::函數,X位置,邊界處理方法:Y的值)
      get_y_value_funct_1d (Function, Minima, ‘mirror’, YValues)
    • 這句話的所有關于數組操作的算子解釋貼子,這句話就是篩選局部最小值低于50的點。
      SelectedMinima := subset(Minima,find(sgn(YValues - 50),-1))
      Num := |SelectedMinima| + 1
      StickEdges := [-5,SelectedMinima,2 * MeasureLength1 + 5]
      StickWidth := StickEdges[1:Num] - StickEdges[0:Num - 1]
    • 計算每個魚塊的中心點與邊界,并畫X
      BorderX := Column + cos(Phi) * (MeasureLength1 * ((StickEdges - MeasureLength1) / MeasureLength1))
      BorderY := Row - sin(Phi) * (MeasureLength1 * ((StickEdges - MeasureLength1) / MeasureLength1))
      CenterX := (BorderX[1:Num] + BorderX[0:Num - 1]) / 2
      CenterY := (BorderY[1:Num] + BorderY[0:Num - 1]) / 2
      gen_cross_contour_xld (BorderCross, BorderY, BorderX, 15, rad(45))
      gen_cross_contour_xld (CenterCross, CenterY, CenterX, 15, rad(45))
    • 篩選大于20小于48的魚塊
      IndexFish := find(sgn(StickWidth - 20),1)
      if (IndexFish != -1)
      NumFish := |IndexFish|
      gen_rectangle2 (FishRegions, subset(CenterY,IndexFish), subset(CenterX,IndexFish), gen_tuple_const(NumFish,Phi), subset(StickWidth,IndexFish) / 2, gen_tuple_const(NumFish,Length2) / 2)
      else
      NumFish := 0
      endif
      gen_empty_region (Flipped)
      IndexFlipped := find(sgn(StickWidth - 48),1)
      if (IndexFlipped != -1)
      NumFlipped := |IndexFlipped|
      gen_rectangle2 (Flipped, subset(CenterY,IndexFlipped), subset(CenterX,IndexFlipped), gen_tuple_const(NumFlipped,Phi), subset(StickWidth,IndexFlipped) / 2, gen_tuple_const(NumFlipped,Length2) / 2)
      else
      NumFlipped := 0
      endif
    • 顯示結果
      dev_set_window (GraphicsWindow)
      dev_clear_window ()
    • plot_funct_1d - 此過程繪制表示坐標系中函數或曲線的元組。這個不是很常用。
      plot_funct_1d (GraphicsWindow, Function, [], [], ‘yellow’, ‘axes_color’, ‘none’)
      disp_message (GraphicsWindow, ‘Gray Profile’, ‘window’, 12, 12, ‘white’, ‘false’)
      dev_set_window (WindowHandle)
      dev_clear_window ()
      dev_display (Image)
      dev_set_color (‘yellow’)
      dev_set_line_width (1)
      dev_display (FishRegions)
      dev_display (BorderCross)
      dev_set_color (‘red’)
      dev_set_line_width (3)
      dev_display (Flipped)
      if (NumFish == 15 and NumFlipped == 0)
      String := ‘OK’
      Color := ‘green’
      else
      String := ‘Not OK’
      Color := ‘red’
      endif
      String[1] := ‘Number of fish sticks:’ + NumFish′3′if(NumFish!=15)Color:=[Color,′red′]elseColor:=[Color,′white′]endifif(NumFlipped!=0)String[2]:=′Flippedfishsticks:′+NumFlipped'3' if (NumFish != 15) Color := [Color,'red'] else Color := [Color,'white'] endif if (NumFlipped != 0) String[2] := 'Flipped fishsticks: ' + NumFlipped3if(NumFish!=15)Color:=[Color,red]elseColor:=[Color,white]endifif(NumFlipped!=0)String[2]:=Flippedfishsticks:+NumFlipped’3’
      Color := [Color,‘red’]
      endif
      disp_message (WindowHandle, String, ‘window’, 12, 12, Color, ‘false’)
      dev_set_color (Color[0])
      dev_display (Rectangle)
      if (Index < NumImages)
      disp_continue_message (WindowHandle, ‘black’, ‘true’)
      stop ()
      endif
      endfor

處理思路

這個例子是主要講解了二維測量的方法。使用的是gen_measure_rectangle2、measure_projection、create_funct_1d_array 、local_min_max_funct_1d、get_y_value_funct_1d完成的測量,當然后續會有更簡單的直觀的方法。

后記

大家有什么問題可以向我提問哈,我看到了第一時間回復,希望在學習的路上多多結交良師益友。

總結

以上是生活随笔為你收集整理的HALCON示例程序count_fish_sticks.hdev鱼棒完整性检测的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲视频手机在线观看 | 久久影片| 男人在线天堂 | 成人h视频在线观看 | 日韩射吧| 欧美性生交xxxxxdddd | 91av在线免费观看 | 精品视频在线一区 | 日韩一区二区三区久久 | 久久久无码精品亚洲无少妇 | 天堂影视在线观看 | 爱情岛论坛av | 欧美在线性爱视频 | 老熟女毛茸茸浓毛 | 女性向片在线观看 | 日韩在线电影一区二区 | 成人免费午夜视频 | 精品国产亚洲一区二区麻豆 | 久久免费少妇高潮久久精品99 | 少妇性l交大片7724com | 日本内谢少妇xxxxx少交 | 亚洲在线免费观看 | 国产精品入口日韩视频大尺度 | 亚洲黄色激情 | 亚洲视频一二三区 | 97日日夜夜 | 91精品国产综合久久久久久久 | 91成人国产综合久久精品 | 韩国三级hd中文字幕叫床浴室 | 成人在线观看h | 国产精品羞羞答答在线观看 | 欧美黑人xxxⅹ高潮交 | 69xx视频在线观看 | 国产激情精品 | 欧美裸体精品 | 天堂网在线最新版www中文网 | 国产三级按摩推拿按摩 | 日本黄色美女 | 我和岳m愉情xxxⅹ视频 | 91口爆一区二区三区在线 | 国产又黄又猛视频 | 在线理论片 | xxxxx18日本| 恶虐女帝安卓汉化版最新版本 | www.黄色国产| 最新国产一区 | 9人人澡人人爽人人精品 | 情趣五月天 | 青青草精品 | 亚洲国产一区在线 | 国产午夜麻豆影院在线观看 | 国产精品久久久久久久久久久久久久久久 | 91福利视频在线观看 | 麻豆av影视 | 亚洲人妻一区二区三区 | 亚洲天堂色 | 一区二区三区亚洲 | 欧美用舌头去添高潮 | 国产做爰xxxⅹ性视频国 | 欧美粗大猛烈 | 欧美被狂躁喷白浆精品 | 亚洲偷| 一级全黄裸体片 | 在线中文字幕第一页 | 欧美日韩在线视频一区 | 911看片| 欧美精品一区二区三区在线播放 | 久久久久久久久久av | 光棍福利视频 | 悠悠色在线 | 一级视频免费观看 | 俄罗斯porn| 久久亚洲一区二区三区四区五区 | 亚色91 | 欧美成人一二三区 | 99久久人妻精品免费二区 | caoporn免费在线视频 | 青青草免费在线 | 丁香六月五月婷婷 | 爱情岛论坛自拍 | 日本乱子伦 | 久久久久久久久久久国产精品 | 超碰在线观看免费 | 都市激情校园春色 | 精品久久久在线观看 | 九九精品在线观看视频 | 波多野结衣黄色片 | 天天射夜夜操 | 亚洲国产精品久久久久久6q | 欧美精品黑人猛交高潮 | 四虎国产精品永久在线国在线 | 亚洲熟女乱色综合亚洲小说 | 青青视频网 | 黄色茄子视频 | 婷婷久久久久 | 欧美精品手机在线 | 亚洲一区网 | 国产精品18久久久久久久久 | 国外精品视频 |