HALCON示例程序check_bottle_crate.hdev啤酒箱內酒瓶數檢測

HALCON示例程序check_bottle_crate.hdev啤酒箱內酒瓶數檢測

示例程序源碼(加注釋)

  • 獲取系統關于“空白區域儲存的設置”
    get_system (‘store_empty_region’, StoreEmptyRegion)
  • 系統“空白區域儲存”設置為 ‘false’
    set_system (‘store_empty_region’, ‘false’)
  • 讀入圖片
    read_image (Image, ‘bottles/bottle_crate_01’)
  • 關閉窗口
    dev_close_window ()
  • 打開一個新圖形窗口,保留給定的長寬比
    dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
  • 設置顯示字體格式
    set_display_font (WindowHandle, 16, ‘mono’, ‘true’, ‘false’)
  • 關閉窗口更新
    dev_update_off ()
  • 區域以邊緣形式顯示
    dev_set_draw (‘margin’)
  • 循環檢測
    for Index := 1 to 24 by 1
    read_image (Image, ‘bottles/bottle_crate_’ + Index$’.02’)
      • 提取背景
    • 進行閾值分割,選取像素灰度值在50-130的區域
      threshold (Image, BackgroundRegion, 50, 130)
    • 使用圓形元素進行開運算
      opening_circle (BackgroundRegion, BackgroundRegion, 3.5)
      • 提取瓶子,瓶子口是很亮的。所以選取85-255區域
    • 進行閾值分割選取85-255的區域
      threshold (Image, Region, 85, 255)
    • 求取背景與提取瓶口區域的差集,將所有瓶口提取出來
      difference (Region, BackgroundRegion, Region)
    • 分割連通域
      connection (Region, ConnectedRegions)
      • 篩選大面積的反光區域,當做干擾處理
    • 使用長度寬度元素進行篩選,篩選出非瓶子的遮擋區域
      select_shape (ConnectedRegions, Clutter, [‘width’,‘height’], ‘or’, [100,100], [500,400])
    • 使用圓形元素進行開運算
      opening_circle (Clutter, Clutter, 8.5)
    • 求取差集,目的是在進行酒瓶識別時不要將不是酒瓶的區域選進去
      difference (ConnectedRegions, Clutter, Region)
    • 分割連通域
      connection (Region, ConnectedRegions)
      • 消除噪聲區域
    • 使用長寬篩選認為是酒瓶子的區域
      select_shape (ConnectedRegions, Candidates, [‘width’,‘height’], ‘and’, [25,25], [100,100])
    • 對區域進行空洞填充
      fill_up (Candidates, FilledCandidates)
    • 因為酒瓶區域均為圓形,我們要保留圓形去除干擾,就用圓形元素對區域進行開運算
      opening_circle (FilledCandidates, FilledCandidates, 15.5)
    • 使用圓度對區域進行篩選
      select_shape (FilledCandidates, RoundCandidates, ‘circularity’, ‘and’, 0.87, 1)
    • 篩選出區域兩點最大距離達到75以上的區域,也就是說不是瓶子的區域。
      select_shape (RoundCandidates, BigBottles, ‘max_diameter’, ‘and’, 75, 99999)
    • 顯示
      dev_set_shape (‘ellipse’)
      count_obj (RoundCandidates, NumBottles)
      count_obj (Clutter, NumClutter)
      dev_display (Image)
      dev_set_line_width (5)
      dev_set_color (‘lime green’)
      dev_display (RoundCandidates)
      dev_set_color (‘goldenrod’)
      dev_display (BigBottles)
      dev_set_color (‘red’)
      dev_display (Clutter)
      dev_set_shape (‘original’)
      disp_message (WindowHandle, NumBottles + ’ bottles found.’, ‘window’, -1, -1, ‘black’, ‘true’)
      if (NumClutter > 0)
      disp_message (WindowHandle, ‘Warning! Clutter detected!’, ‘window’, 40, -1, ‘red’, ‘true’)
      endif
      if (Index < 24)
      disp_continue_message (WindowHandle, ‘black’, ‘true’)
      stop ()
      endif
      endfor
  • 恢復系統初始設置
    set_system (‘store_empty_region’, StoreEmptyRegion)

全是瓶身的情況
有瓶子缺少時的識別狀態
瓶體倒立時的識別狀態
有斜放,或者其他物品時產生報警

處理思路

經典的bolo分析進行酒瓶統計的例程,首先提取出背景干擾部分,再進行瓶身提取,提取出的瓶身區域減去提取出的背景干擾,最終將瓶身提取出來;通過開運算提取圓形的平身,消除箱體的干擾;通過區域的寬高的特征篩選出哪些是真正的瓶身,哪些是沒有擺放好的瓶子。

后記

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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/255280.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/255280.shtml
英文地址,請注明出處:http://en.pswp.cn/news/255280.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

#undef 標識符

#undef 是在后面取消以前定義的宏定義 該指令的形式為 #undef 標識符 其中&#xff0c;標識符是一個宏名稱。如果標識符當前沒有被定義成一個宏名稱&#xff0c;那么就會忽略該指令。一旦定義預處理器標識符&#xff0c;它將保持已定義狀態且在作用域內&#xff0c;直到程序結束…

[轉]OpenGL庫介紹

原帖地址&#xff1a;http://blog.csdn.net/yyyuhan/archive/2008/01/15/2045009.aspx 開發基于OpenGL的應用程序&#xff0c;必須先了解OpenGL的庫函數。它采用C語言風格&#xff0c;提供大量的函數來進行圖形的處理和顯示。OpenGL庫函數的命名方式非常有規律。所有OpenGL函數…

SQL Server優化50法

查詢速度慢的原因很多&#xff0c;常見如下幾種&#xff1a; 1、沒有索引或者沒有用到索引(這是查詢慢最常見的問題&#xff0c;是程序設計的缺陷) 2、I/O吞吐量小&#xff0c;形成了瓶頸效應。 3、沒有創建計算列導致查詢不優化。 4、內存不足 5、網絡速度慢 …

HALCON示例程序check_fish_stick_dimension.hdev生魚棒尺寸測量;基于形態學的像素級精度尺寸測量

HALCON示例程序check_fish_stick_dimension.hdev基于形態學的像素級精度尺寸測量 示例程序源碼&#xff08;加注釋&#xff09; 關閉實時顯示更新 dev_update_off () 關閉窗口 dev_close_window () 讀入圖片 read_image (Image, ‘food/fish_sticks_raw_01’) 根據給定長寬…

單片機平臺的最小偏差圓弧插補算法

在CNC機床的G代碼中&#xff0c;最常見的有G0、G1、G2、G3代碼&#xff0c;分別表示直線和圓弧插補&#xff0c;直線插補對于單片機來說&#xff0c;比較容易實現&#xff0c;只需要將位移增量轉換為脈沖增量然后輸出給步進電機就可以了&#xff0c;但對于圓弧插補&#xff0c;…

javascript基礎--數組排序

字符串的排序 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>數組排序</title><script>var arr [fliar, asdf, dfe, loii, yhhl];arr.sort();alert(arr);</script> </head>&…

【轉】JS跨域(ajax跨域、iframe跨域)解決方法及原理詳解(jsonp)

這里說的js跨域是指通過js在不同的域之間進行數據傳輸或通信&#xff0c;比如用ajax向一個不同的域請求數據&#xff0c;或者通過js獲取頁面中不同域的框架中(iframe)的數據。只要協議、域名、端口有任何一個不同&#xff0c;都被當作是不同的域。 下表給出了相對http://store.…

Lua基本語法-lua與C#的交互(相當簡單詳細的例子)

lua腳本 與 C#的交互 本文提供全流程&#xff0c;中文翻譯。Chinar堅持將簡單的生活方式&#xff0c;帶給世人&#xff01;&#xff08;擁有更好的閱讀體驗 —— 高分辨率用戶請根據需求調整網頁縮放比例&#xff09; 1Lua And C# —— Lua 和 C#的交互準備工作 2C# Create Lu…

漫談程序員系列:千奇百怪的程序員

干開發時間長了&#xff0c;遇見好多好玩兒的程序員。 看看你躺槍了沒。 博客之星評選&#xff0c;點擊投我一票&#xff0c;謝謝。投過了也可以點哦&#xff0c;每天都可以投投一票。 留一手 有個哥們兒&#xff0c;在一合資公司做程序員&#xff0c;能力挺強&#xff0c;寫…

HALCON示例程序check_hazelnut_wafers.hdev威化餅干質量檢測(完整與否,是否破碎)

HALCON示例程序check_hazelnut_wafers.hdev威化餅干質量檢測&#xff08;完整與否&#xff0c;是否破碎&#xff09; 示例程序源碼&#xff08;加注釋&#xff09; 讀入圖片 read_image (Image, ‘food/hazelnut_wafer_01’) 關閉窗口 dev_close_window () 根據給定的長寬比…

Windows Media Center .MCL文件代碼執行漏洞(MS16-059)

blast 2016/06/21 13:180x00 簡介漏洞作者EduardoBraun Prado在今年早期發現了WMP的.MCL文件又存在一個可以導致遠程代碼執行的漏洞。為什么要說又呢&#xff0c;因為這個東西實在是“不爭氣”&#xff0c;同一個地方出現了多次繞過導致遠程代碼執行的問題。0x01 歷史A――MS1…

SCARA機器人與 DELTA機器人

1、SCARA機器人SCARA&#xff08;Selective Compliance Assembly Robot Arm&#xff0c;中文譯名&#xff1a;選擇順應性裝配機器手臂&#xff09;是一種圓柱坐標型的特殊類型的工業機器人。1978年&#xff0c;日本山梨大學牧野洋發明SCARA&#xff0c;該機器人具有四個軸和四個…

一直以來都沒直視的輪播-_-

一直以來做項目碰到輪播圖我都是去網站上找現成插件拿來用&#xff0c;現成的插件1是省時間&#xff0c;拿來改改尺寸改改參數就能直接用&#xff0c;2是現在的插件確實很強大&#xff0c;對于我一個剛剛學習前端的人來說&#xff0c;牛人寫的輪播我看懂也要花些功夫&#xff0…

HALCON示例程序circles.hdev邊界輪廓的圓形擬合

HALCON示例程序circles.hdev邊界輪廓的圓形擬合 小哥哥小姐姐覺得有用點個贊唄&#xff01; 示例程序源碼&#xff08;加注釋&#xff09; 讀入圖片 read_image (Image, ‘double_circle’)窗口初始化 dev_close_window () get_image_size (Image, Width, Height) dev_open…

asp.net 微信企業號辦公系統-流程設計--保存與發布

如果流程未設計完時可以先保存&#xff0c;以后再打開接著設計。點擊工具欄上的保存按鈕即可保存當前流程設計: 如果下次要接著設計&#xff0c;則可以打開該流程繼續設計&#xff1a; 如果流程設計完成&#xff0c;可以點擊安裝按鈕來發布流程&#xff0c;流程安裝成功后即加入…

search-guard 在 Elasticsearch 2.3 上的運用

uni3orns 2016/06/23 11:09Author&#xff1a;uni3orns參考內容&#xff1a;kibana.logstash.es/content/ela…groups.google.com/forum/#!for…github.com/floragunnco…此文章基于以下軟件版本&#xff0c;不同版本可能略有差異&#xff1a;elasticsearch 2.3.3search-guard…

HALCON示例程序class_2dim_sup.hdev使用二維像素分類對圖像進行分割

HALCON示例程序class_2dim_sup.hdev使用二維像素分類對圖像進行分割 示例程序源碼&#xff08;加注釋&#xff09; 定義Interactive并賦值&#xff0c;0&#xff1a;固定框&#xff1b;1&#xff1a;手工繪制框。 Interactive : 0 讀入圖片 read_image (Image, ‘ic’) 關閉…

sys

sys.argv 命令行參數List&#xff0c;第一個元素是程序本身路徑 sys.exit(n) 退出程序&#xff0c;正常退出時exit(0) sys.version 獲取Python解釋程序的版本信息 sys.maxint 最大的Int值 sys.path 返回模塊的搜索路徑&#xff0c;初…

修改環境變量

在path變量后添加&#xff0c;對變量長度無限制&#xff0c;需要重啟后生效reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_SZ /d "%path%;c:\newpath;whatever" /freg save "HKLM\SYSTEM\CurrentCont…

Canny邊緣檢測算法原理及其VC實現詳解(二)

3、 Canny算法的實現流程 由于本文主要目的在于學習和實現算法&#xff0c;而對于圖像讀取、視頻獲取等內容不進行闡述。因此選用OpenCV算法庫作為其他功能的實現途徑&#xff08;關于OpenCV的使用&#xff0c;作者將另文表述&#xff09;。首先展現本文將要處理的彩色圖片。 …