久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術文章
文章詳情頁

使用Python-OpenCV消除圖像中孤立的小區域操作

瀏覽:23日期:2022-07-18 16:24:01

之前一直使用Skimage中的形態學處理來進行孤立小區域的去除,代碼如下

img = morphology.remove_small_objects(img, size)

img = morphology.remove_small_holes(img, size)

后面需要將相應算法翻譯到C++環境中,而Skimage沒有對應的C++版本,為了確保python算法和C++算法結果的一致性,需要進行遷移,因而打算使用OpenCV來重寫去除孤立小區域的代碼。代碼如下:

_,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)

其中對于輸入圖像img首先使用閾值處理獲得二值化圖像,cv2.threshold表示進行閾值二值化處理,0.1是設定的閾值(img是0-1圖像),1表示圖像中的最大值,cv2.THRESH_BINARY表示圖像處理的方法,在openCv中有如下記錄

使用Python-OpenCV消除圖像中孤立的小區域操作

然后使用findContours,用來獲得二值化圖像的輪廓信息,findContours中cv2.RETR_EXTERNAL是表示輪廓獲取方式,是表示內圈的輪廓不需要進行獲取,cv2.CHAIN_APPROX_NONE表示是輪廓曲線記錄的方式,CHAIN_APPROX_NONE表示記錄所有的輪廓點,具體的參數說明可以參看:

https://docs.opencv.org/3.0-beta/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html?highlight=findcontours

使用Python-OpenCV消除圖像中孤立的小區域操作

然后,后面的contourArea是用來獲取輪廓所包圍的面積,threshold是面積閾值,當小于該閾值時認為是孤立小區域,需要去除

最后drawContours是對孤立小區域進行去除的方式,去除操作比較簡單,就是往這些區域里面填充為0即可,drawContours的參量可參考如下:

https://docs.opencv.org/3.0-beta/modules/imgproc/doc/drawing_functions.html?highlight=drawcontours

使用Python-OpenCV消除圖像中孤立的小區域操作

這里,drawContours的第一個參量是輸入待處理圖像,第二個參量是將要處理的孤立區域輪廓Vector,第三個參量是表示輪廓的坐標,這里為0表示contours的第一個,第四個參量表示填充的數值,這里是integer的情況下則表明是灰度圖,填充為1,而最后一個參量為-1,是thickness,表明按照填充方式處理該輪廓圍繞的區域

示例如下:

使用Python-OpenCV消除圖像中孤立的小區域操作

使用Python-OpenCV消除圖像中孤立的小區域操作

以上這篇使用Python-OpenCV消除圖像中孤立的小區域操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 潍坊市| 大化| 东明县| 临朐县| 原阳县| 梅河口市| 永仁县| 托里县| 桦川县| 屏南县| 宣化县| 郧西县| 紫金县| 都昌县| 平武县| 卫辉市| 庆安县| 马公市| 县级市| 馆陶县| 麻江县| 通城县| 博野县| 玛曲县| 神农架林区| 安陆市| 平顺县| 光山县| 墨竹工卡县| 大埔县| 唐海县| 卓资县| 宁蒗| 凌源市| 凤山县| 织金县| 彝良县| 西宁市| 弥渡县| 潮安县| 汾西县|