使用Python-OpenCV消除圖像中孤立的小區(qū)域操作
之前一直使用Skimage中的形態(tài)學(xué)處理來進(jìn)行孤立小區(qū)域的去除,代碼如下
img = morphology.remove_small_objects(img, size)
img = morphology.remove_small_holes(img, size)
后面需要將相應(yīng)算法翻譯到C++環(huán)境中,而Skimage沒有對(duì)應(yīng)的C++版本,為了確保python算法和C++算法結(jié)果的一致性,需要進(jìn)行遷移,因而打算使用OpenCV來重寫去除孤立小區(qū)域的代碼。代碼如下:
_,binary = cv2.threshold(img,0.1,1,cv2.THRESH_BINARY) image,contours,hierarch=cv2.findContours(binary,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_NONE) for i in range(len(contours)): area = cv2.contourArea(contours[i]) if area < threshold: cv2.drawContours(image,[contours[i]],0,0,-1)
其中對(duì)于輸入圖像img首先使用閾值處理獲得二值化圖像,cv2.threshold表示進(jìn)行閾值二值化處理,0.1是設(shè)定的閾值(img是0-1圖像),1表示圖像中的最大值,cv2.THRESH_BINARY表示圖像處理的方法,在openCv中有如下記錄
然后使用findContours,用來獲得二值化圖像的輪廓信息,findContours中cv2.RETR_EXTERNAL是表示輪廓獲取方式,是表示內(nèi)圈的輪廓不需要進(jìn)行獲取,cv2.CHAIN_APPROX_NONE表示是輪廓曲線記錄的方式,CHAIN_APPROX_NONE表示記錄所有的輪廓點(diǎn),具體的參數(shù)說明可以參看:
然后,后面的contourArea是用來獲取輪廓所包圍的面積,threshold是面積閾值,當(dāng)小于該閾值時(shí)認(rèn)為是孤立小區(qū)域,需要去除
最后drawContours是對(duì)孤立小區(qū)域進(jìn)行去除的方式,去除操作比較簡(jiǎn)單,就是往這些區(qū)域里面填充為0即可,drawContours的參量可參考如下:
https://docs.opencv.org/3.0-beta/modules/imgproc/doc/drawing_functions.html?highlight=drawcontours
這里,drawContours的第一個(gè)參量是輸入待處理圖像,第二個(gè)參量是將要處理的孤立區(qū)域輪廓Vector,第三個(gè)參量是表示輪廓的坐標(biāo),這里為0表示contours的第一個(gè),第四個(gè)參量表示填充的數(shù)值,這里是integer的情況下則表明是灰度圖,填充為1,而最后一個(gè)參量為-1,是thickness,表明按照填充方式處理該輪廓圍繞的區(qū)域
示例如下:
以上這篇使用Python-OpenCV消除圖像中孤立的小區(qū)域操作就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Python+OpenCV圖像處理——打印圖片屬性、設(shè)置存儲(chǔ)路徑、調(diào)用攝像頭
- OpenCV利用python來實(shí)現(xiàn)圖像的直方圖均衡化
- Python環(huán)境使用OpenCV檢測(cè)人臉實(shí)現(xiàn)教程
- Python Opencv輪廓常用操作代碼實(shí)例解析
- python opencv pytesseract 驗(yàn)證碼識(shí)別的實(shí)現(xiàn)
- 詳解python中GPU版本的opencv常用方法介紹
- Python OpenCV讀取中文路徑圖像的方法
- OpenCV+python實(shí)現(xiàn)實(shí)時(shí)目標(biāo)檢測(cè)功能
- python opencv把一張圖片嵌入(疊加)到另一張圖片上的實(shí)現(xiàn)代碼
- Python+OpenCV圖像處理—— 色彩空間轉(zhuǎn)換
相關(guān)文章
python進(jìn)程和線程用法知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家整理了關(guān)于python進(jìn)程和線程用法以及相關(guān)實(shí)例內(nèi)容,需要的朋友們跟著學(xué)習(xí)下。2019-05-05關(guān)于python爬蟲應(yīng)用urllib庫作用分析
這篇文章主要介紹了關(guān)于python爬蟲應(yīng)用urllib庫作用分析,想要進(jìn)行python爬蟲首先我們需要先將網(wǎng)頁上面的信息給獲取下來,這就是utllib庫的作用,有需要的朋友可以借鑒參考下2021-09-09Python imutils 填充圖片周邊為黑色的實(shí)現(xiàn)
今天小編就為大家分享一篇Python imutils 填充圖片周邊為黑色的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-01-01使用tensorboard可視化loss和acc的實(shí)例
今天小編就為大家分享一篇使用tensorboard可視化loss和acc的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-01-01python的tkinter布局之簡(jiǎn)單的聊天窗口實(shí)現(xiàn)方法
這篇文章主要介紹了python的tkinter布局之簡(jiǎn)單的聊天窗口實(shí)現(xiàn)方法,對(duì)于tkinter用法做了初步的介紹與應(yīng)用展示,需要的朋友可以參考下2014-09-09python實(shí)戰(zhàn)之PyQt5實(shí)現(xiàn)漫畫臉
本文詳細(xì)講解了python實(shí)戰(zhàn)之PyQt5實(shí)現(xiàn)漫畫臉的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-12-12python基礎(chǔ)教程之匿名函數(shù)lambda
這篇文章主要介紹了 python基礎(chǔ)教程之匿名函數(shù)lambda的相關(guān)資料,需要的朋友可以參考下2017-01-01