欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python-opencv在有噪音的情況下提取圖像的輪廓實例

 更新時間:2017年08月30日 11:37:41   投稿:jingxian  
下面小編就為大家?guī)硪黄猵ython-opencv在有噪音的情況下提取圖像的輪廓實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

對于一般的圖像提取輪廓,介紹了一個很好的方法,但是對于有噪聲的圖像,并不能很好地捕獲到目標(biāo)物體。

比如對于我的鼠標(biāo),提取的輪廓效果并不好,因為噪聲很多:

所以本文增加了去掉噪聲的部分。

首先加載原始圖像,并顯示圖像

img = cv2.imread("temp.jpg")    #載入圖像
h, w = img.shape[:2]      #獲取圖像的高和寬 
cv2.imshow("Origin", img) 

然后進行低通濾波處理,進行降噪

blured = cv2.blur(img,(5,5))    #進行濾波去掉噪聲
cv2.imshow("Blur", blured)     #顯示低通濾波后的圖像

使用floodfill來去掉目標(biāo)周圍的背景,泛洪填充類始于ps的魔棒工具,這里用來清除背景。

然后轉(zhuǎn)換成灰度圖

gray = cv2.cvtColor(blured,cv2.COLOR_BGR2GRAY) 
cv2.imshow("gray", gray) 

此時目標(biāo)圖像周圍有寫不光滑,還有一些噪聲,因此進行開閉運算,得到比較光滑的目標(biāo)

#定義結(jié)構(gòu)元素 
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(50, 50))
#開閉運算,先開運算去除背景噪聲,再繼續(xù)閉運算填充目標(biāo)內(nèi)的孔洞
opened = cv2.morphologyEx(gray, cv2.MORPH_OPEN, kernel) 
closed = cv2.morphologyEx(opened, cv2.MORPH_CLOSE, kernel) 
cv2.imshow("closed", closed)

接著轉(zhuǎn)換成二值圖以便于獲取圖像的輪廓

最后進行輪廓提取,抓取到目標(biāo)

#找到輪廓
_,contours, hierarchy = cv2.findContours(binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) 
#繪制輪廓
cv2.drawContours(img,contours,-1,(0,0,255),3) 
#繪制結(jié)果
cv2.imshow("result", img)

全部代碼如下

#coding=utf-8 
import cv2 
import numpy as np

img = cv2.imread("temp.jpg")    #載入圖像
h, w = img.shape[:2]      #獲取圖像的高和寬 
cv2.imshow("Origin", img)     #顯示原始圖像

blured = cv2.blur(img,(5,5))    #進行濾波去掉噪聲
cv2.imshow("Blur", blured)     #顯示低通濾波后的圖像

mask = np.zeros((h+2, w+2), np.uint8)  #掩碼長和寬都比輸入圖像多兩個像素點,滿水填充不會超出掩碼的非零邊緣 
#進行泛洪填充
cv2.floodFill(blured, mask, (w-1,h-1), (255,255,255), (2,2,2),(3,3,3),8)
cv2.imshow("floodfill", blured) 

#得到灰度圖
gray = cv2.cvtColor(blured,cv2.COLOR_BGR2GRAY) 
cv2.imshow("gray", gray) 


#定義結(jié)構(gòu)元素 
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(50, 50))
#開閉運算,先開運算去除背景噪聲,再繼續(xù)閉運算填充目標(biāo)內(nèi)的孔洞
opened = cv2.morphologyEx(gray, cv2.MORPH_OPEN, kernel) 
closed = cv2.morphologyEx(opened, cv2.MORPH_CLOSE, kernel) 
cv2.imshow("closed", closed) 

#求二值圖
ret, binary = cv2.threshold(closed,250,255,cv2.THRESH_BINARY) 
cv2.imshow("binary", binary) 

#找到輪廓
_,contours, hierarchy = cv2.findContours(binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) 
#繪制輪廓

cv2.drawContours(img,contours,-1,(0,0,255),3) 
#繪制結(jié)果
cv2.imshow("result", img)

cv2.waitKey(0) 
cv2.destroyAllWindows()

以上這篇python-opencv在有噪音的情況下提取圖像的輪廓實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python使用openpyxl讀寫excel文件的方法

    Python使用openpyxl讀寫excel文件的方法

    本篇文章主要介紹了Python使用openpyxl讀寫excel文件的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • python實現(xiàn)跨文件全局變量的方法

    python實現(xiàn)跨文件全局變量的方法

    這篇文章主要介紹了python實現(xiàn)跨文件全局變量的方法,需要的朋友可以參考下
    2014-07-07
  • Python找出微信上刪除你好友的人腳本寫法

    Python找出微信上刪除你好友的人腳本寫法

    在本篇文章中我們給大家分享了Python找出微信上刪除你好友的人腳本寫法以及相關(guān)實例代碼,有需要的朋友們參考下。
    2018-11-11
  • 深入淺析python定時殺進程

    深入淺析python定時殺進程

    這篇文章主要介紹了深入淺析python定時殺進程的相關(guān)資料,需要的朋友可以參考下
    2016-06-06
  • 兒童python練習(xí)實例

    兒童python練習(xí)實例

    小編在網(wǎng)上整理了關(guān)于兒童python相關(guān)編程的練習(xí)實例,如果有小朋友對此感興趣可以學(xué)習(xí)下。
    2018-05-05
  • 探索Python元類與class語句協(xié)議掌握類的控制權(quán)

    探索Python元類與class語句協(xié)議掌握類的控制權(quán)

    這篇文章主要介紹了通過Python元類與class語句協(xié)議掌握類的控制權(quán)探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • 如何利用pycharm進行代碼更新比較

    如何利用pycharm進行代碼更新比較

    這篇文章主要介紹了如何利用pycharm進行代碼更新比較,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • python 畫出使用分類器得到的決策邊界

    python 畫出使用分類器得到的決策邊界

    這篇文章主要介紹了python 畫出使用分類器得到的決策邊界,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Python中導(dǎo)入自定義模塊的幾種方法總結(jié)

    Python中導(dǎo)入自定義模塊的幾種方法總結(jié)

    這篇文章主要介紹了Python中導(dǎo)入自定義模塊的幾種方法總結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Python 文件管理實例詳解

    Python 文件管理實例詳解

    這篇文章主要介紹了Python 文件管理的方法,以實例形式較為詳細的分析了Python針對文件的各種常用函數(shù)使用方法與相關(guān)注意事項,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11

最新評論