中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++怎么用OpenCV獲取圖片中物品的數量

發布時間:2021-08-24 09:57:15 來源:億速云 閱讀:423 作者:chen 欄目:大數據

這篇文章主要講解了“C++怎么用OpenCV獲取圖片中物品的數量”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“C++怎么用OpenCV獲取圖片中物品的數量”吧!


實現效果

C++怎么用OpenCV獲取圖片中物品的數量

我們看到上面這張圖片,運用我們學到的OpenCV技術計算出這張圖片里面一共有多少顆棗。

實現思路

  • 二值化圖像分割

  • 形態學操作(腐蝕+膨脹)

  • 距離變換

  • 連通區域計算

  • 尋找輪廓并計算個數

  • 代碼演示

    我們再新建一個項目名為opencv--count,按照配置屬性(VS2017配置OpenCV通用屬性),然后在源文件寫入#include和main方法.

    C++怎么用OpenCV獲取圖片中物品的數量

    首先加載了圖片顯示出來




    二值化圖像分割

    首先將圖片大小調整一下,方便我們顯示觀看

    C++怎么用OpenCV獲取圖片中物品的數量


    然后對圖像進行高斯模糊,并轉為灰度圖

    C++怎么用OpenCV獲取圖片中物品的數量


    再對圖像進行二值化操作

    C++怎么用OpenCV獲取圖片中物品的數量


    我們這里運行一下看看顯示效果

    C++怎么用OpenCV獲取圖片中物品的數量

    上圖可以看到右邊的圖片我們已經進行過二值化處理后的顯示效果了




    形態學操作

    接下來我們要進行形態學的操作,首先看到上面右圖,我們的每個棗的里面會有白色的點,是光打上后我們二值化變為的白色,所以我們這里要先進行一下腐蝕操作,把棗里面的白點去掉。

    C++怎么用OpenCV獲取圖片中物品的數量


    運行起來看

    C++怎么用OpenCV獲取圖片中物品的數量

    可以看到右圖中的白點已經全部處理掉了


    接下來我們再進行膨脹的操作,用于把黑色區域進行分割,這里的膨脹操作可以連續做幾次,盡量把黑色區域縮小,我的參數里面我做了5次膨脹

    C++怎么用OpenCV獲取圖片中物品的數量


    再看一下效果

    C++怎么用OpenCV獲取圖片中物品的數量

    左圖是經常五次膨脹后把黑色區域都分割的效果




    距離變換

    首先將我們的二值化圖像黑白反轉過來

    C++怎么用OpenCV獲取圖片中物品的數量


    然后開始距離的變換

    C++怎么用OpenCV獲取圖片中物品的數量


    接下來再進行歸一化處理并顯示出來

    C++怎么用OpenCV獲取圖片中物品的數量


    顯示的效果為

    C++怎么用OpenCV獲取圖片中物品的數量




    連通區域計算

    首先我們先建一個8u的圖并轉換過來

    C++怎么用OpenCV獲取圖片中物品的數量


    然后我們根據上面圖里面白點進行局部閾值二值化處理

    C++怎么用OpenCV獲取圖片中物品的數量


    顯示效果為

    C++怎么用OpenCV獲取圖片中物品的數量

    可以看到右邊基本把白色的連接區域都分割開了,只不過各別地方也有一點白點


    然后我們再通過形態學膨脹兩次進行處理

    C++怎么用OpenCV獲取圖片中物品的數量

    把一點白點斷開的區域通過膨脹再連接到一起




    尋找并計算輪廓

    根據上面的圖我們在那個基礎上尋找輪廓,參數用的CV_RETR_EXTERNAL,這里我們只找最外側輪廓即可。

    C++怎么用OpenCV獲取圖片中物品的數量


    根據找到的輪廓畫出新圖并輸出結果,在drawContours里面倒數第二個參數用的-1,這里是代表輪廓畫出來后直接填充滿了。


    C++怎么用OpenCV獲取圖片中物品的數量


    運行效果

    C++怎么用OpenCV獲取圖片中物品的數量


    再看一下輸出的值:

    C++怎么用OpenCV獲取圖片中物品的數量

    回到我們的源圖片一下,確實就是12個棗

    C++怎么用OpenCV獲取圖片中物品的數量



感謝各位的閱讀,以上就是“C++怎么用OpenCV獲取圖片中物品的數量”的內容了,經過本文的學習后,相信大家對C++怎么用OpenCV獲取圖片中物品的數量這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

客服| 连平县| 荔波县| 霍山县| 饶河县| 循化| 长宁县| 壤塘县| 五大连池市| 竹溪县| 临西县| 尉氏县| 巩留县| 德惠市| 汝南县| 宁陕县| 隆德县| 北宁市| 利川市| 大悟县| 什邡市| 济宁市| 酒泉市| 南澳县| 红安县| 绥滨县| 微博| 黔江区| 上高县| 东光县| 西和县| 营山县| 乌拉特前旗| 如东县| 谢通门县| 栾川县| 麻栗坡县| 无棣县| 吴旗县| 凌源市| 阜南县|