国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

opencv-python常用函數(shù)解析及參數(shù)介紹(五)——腐蝕與膨脹

這篇具有很好參考價值的文章主要介紹了opencv-python常用函數(shù)解析及參數(shù)介紹(五)——腐蝕與膨脹。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

前言

有些時候圖片上會有一些劃痕或者污漬,會影響圖片的質(zhì)量,假設(shè)我有一張寫有“艾醒”的圖片,但是有花花綠綠的劃痕和污漬,這時我們就可以運(yùn)用腐蝕與膨脹消除這些劃痕和污漬

膨脹

腐蝕的本質(zhì)就是白吃黑,即數(shù)值較大的(較白的)吃掉數(shù)值較小的(較黑的)
我們可以用cv2.dilate進(jìn)行膨脹,參數(shù)為圖片,卷積核,膨脹次數(shù)
其原理就是在卷積核范圍內(nèi),如果周圍顏色淺的(數(shù)值較大的)多,那么當(dāng)前點(diǎn)就應(yīng)該是顏色淺的,否則應(yīng)該是顏色深的
假設(shè)我們有一張圖片名稱為aixing.png
cv2.dilate,OpenCV-Python圖像處理,筆記,opencv,python,計(jì)算機(jī)視覺

img = cv2.imread('aixing.png')
kernel = np.ones((5,5),np.uint8) 
dilate = cv2.dilate(dige_erosion,kernel,iterations = 3)

cv2.imshow('dilate', dilate)
cv2.waitKey(0)
cv2.destroyAllWindows()

我們用5x5的卷積核來進(jìn)行3次膨脹
cv2.dilate,OpenCV-Python圖像處理,筆記,opencv,python,計(jì)算機(jī)視覺
可以看到雖然劃痕和污漬幾乎沒有了,但是這個圖片上的字比之前小不少,為了還原字的大小我們還需要進(jìn)行腐蝕操作,注意腐蝕操作需要跟膨脹操作卷積核和執(zhí)行次數(shù)相同才能還原之前的大小

腐蝕

腐蝕的本質(zhì)就是黑吃白,即數(shù)值較小的(較黑的)吃掉數(shù)值較大的(較白的)
我們可以用cv2.erode進(jìn)行腐蝕,參數(shù)為圖片,卷積核,腐蝕次數(shù)
其原理就是在卷積核中,如果周圍顏色深的(數(shù)值較小的)多,那么當(dāng)前點(diǎn)就應(yīng)該是顏色深的,否則應(yīng)該是顏色淺的

我們進(jìn)行腐蝕

kernel = np.ones((5,5),np.uint8) 
erosion = cv2.erode(dilate,kernel,iterations = 3)

cv2.imshow('erosion', erosion)
cv2.waitKey(0)
cv2.destroyAllWindows()

cv2.dilate,OpenCV-Python圖像處理,筆記,opencv,python,計(jì)算機(jī)視覺
現(xiàn)在我們可以看到劃痕和污漬已經(jīng)去掉了

開運(yùn)算與閉運(yùn)算

實(shí)際上這兩個功能很雞肋,開運(yùn)算就是先腐蝕,再膨脹;閉運(yùn)算就是先膨脹,再腐蝕
opencv中cv2.morphologyEx函數(shù)可以實(shí)現(xiàn)開閉運(yùn)算,參數(shù)為圖片,操作類型,卷積核
操作類型參數(shù)

cv2.MORPH_OPEN cv2.MORPH_CLOSE
開運(yùn)算 閉運(yùn)算

很明顯,我們剛剛的問題需要進(jìn)行閉運(yùn)算

img = cv2.imread('aixing.png')

kernel = np.ones((5,5),np.uint8) 
closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)

cv2.imshow('closing', closing)
cv2.waitKey(0)
cv2.destroyAllWindows()

cv2.dilate,OpenCV-Python圖像處理,筆記,opencv,python,計(jì)算機(jī)視覺

可以看到效果并不好,這是為什么呢,因?yàn)殚]運(yùn)算只進(jìn)行了一次膨脹一次腐蝕,而我們得到的較好的結(jié)果是進(jìn)行了3次膨脹和3次腐蝕

開運(yùn)算的代碼也放在這里,但要說明當(dāng)前問題并不適合開運(yùn)算,如果畫面背景是偏深色的,我們需要側(cè)重的部分或者文字是偏淺色的較為適合開運(yùn)算,如果要嘗試我們可以將圖片反色,如何反色呢?令255減去圖片就好了

img = cv2.imread('aixing.png')

kernel = np.ones((5,5),np.uint8) 
reverse = 255 - img # 反色
cv2.imshow('opening', reverse)
cv2.waitKey(0)
cv2.destroyAllWindows()

opening = cv2.morphologyEx(reverse, cv2.MORPH_OPEN, kernel)

cv2.imshow('opening', opening)
cv2.waitKey(0)
cv2.destroyAllWindows()

cv2.dilate,OpenCV-Python圖像處理,筆記,opencv,python,計(jì)算機(jī)視覺
cv2.dilate,OpenCV-Python圖像處理,筆記,opencv,python,計(jì)算機(jī)視覺

可以看到效果也不好,所以這個函數(shù)了解即可。

禮帽與黑帽

沒有什么需要解釋的,了解下面的操作就可以了
禮帽 = 原始輸入-開運(yùn)算結(jié)果
黑帽 = 閉運(yùn)算-原始輸入

#禮帽
img = cv2.imread('aixing.png')
tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)
cv2.imshow('tophat', tophat)
cv2.waitKey(0)
cv2.destroyAllWindows()

cv2.dilate,OpenCV-Python圖像處理,筆記,opencv,python,計(jì)算機(jī)視覺

#黑帽
img = cv2.imread('aixing.png')
blackhat  = cv2.morphologyEx(img,cv2.MORPH_BLACKHAT, kernel)
cv2.imshow('blackhat ', blackhat )
cv2.waitKey(0)
cv2.destroyAllWindows()

cv2.dilate,OpenCV-Python圖像處理,筆記,opencv,python,計(jì)算機(jī)視覺

運(yùn)用膨脹和腐蝕獲得圖像輪廓

假設(shè)我們有這樣一個名為yan.jpg的巖元素圖標(biāo)
cv2.dilate,OpenCV-Python圖像處理,筆記,opencv,python,計(jì)算機(jī)視覺
為了獲取它的輪廓,我們先要將他二值化,即進(jìn)行前幾篇文章提到過的閾值操作,很顯然我們應(yīng)該選用cv2.THRESH_BINARY參數(shù)

yan = cv2.imread('yan.jpg', cv2.IMREAD_GRAYSCALE)
ret, img = cv2.threshold(yan, 220, 255, cv2.THRESH_BINARY)
cv_show(img, 'threshold')

cv2.dilate,OpenCV-Python圖像處理,筆記,opencv,python,計(jì)算機(jī)視覺
然后分別進(jìn)行一次膨脹和一次腐蝕

kernel = np.ones((5,5),np.uint8) 
dilate = cv2.dilate(img,kernel,iterations = 1)
erosion = cv2.erode(img,kernel,iterations = 1)

res = np.hstack((dilate,erosion))

cv2.imshow('res', res)
cv2.waitKey(0)
cv2.destroyAllWindows()

cv2.dilate,OpenCV-Python圖像處理,筆記,opencv,python,計(jì)算機(jī)視覺
左側(cè)是膨脹,右側(cè)是腐蝕的結(jié)果
然后膨脹減去腐蝕

cv2.imshow('res', cv2.convertScaleAbs(dilate-erosion))
cv2.waitKey(0)
cv2.destroyAllWindows()

cv2.dilate,OpenCV-Python圖像處理,筆記,opencv,python,計(jì)算機(jī)視覺

那么為什么是膨脹減腐蝕呢,因?yàn)榕蛎浀陌咨膮^(qū)域多,白色的是非0值,所以實(shí)際上白色輪廓曾是膨脹后的一部分,但是這樣得到的輪廓實(shí)際上比真實(shí)的輪廓要寬,因?yàn)榕蛎洉屳喞蚶飻U(kuò)展,腐蝕會讓輪廓向外擴(kuò)展
那么如何得到恰好的輪廓呢

真實(shí)的輪廓我們可以分為內(nèi)輪廓和外輪廓
要得到內(nèi)輪廓,我們只需膨脹減去膨脹前的圖就好了

cv2.imshow('res', cv2.convertScaleAbs(dilate-img))
cv2.waitKey(0)
cv2.destroyAllWindows()

cv2.dilate,OpenCV-Python圖像處理,筆記,opencv,python,計(jì)算機(jī)視覺
同樣的,外輪廓可以通過腐蝕前的圖像減去腐蝕后的圖像得到

cv2.imshow('res', cv2.convertScaleAbs(img-erosion))
cv2.waitKey(0)
cv2.destroyAllWindows()

cv2.dilate,OpenCV-Python圖像處理,筆記,opencv,python,計(jì)算機(jī)視覺

單獨(dú)這樣看也許并不明顯,那么我們將他們畫在一起來看對比
首先我們打開原圖,我們將在原圖上畫輪廓

color_yan  = cv2.imread('yan.jpg')

我們要先獲取索引來找到哪些點(diǎn)位需要輪廓

idx1, idx2 = np.where((dilate-erosion)!=0)
idx3, idx4 = np.where((img-erosion)!=0)
idx5, idx6 = np.where((dilate-img)!=0)

由于膨脹減去腐蝕的寬度正好可以被原圖減腐蝕和膨脹減原圖覆蓋,即被外輪廓和內(nèi)輪廓的和覆蓋,所以我們分別展示膨脹減腐蝕與內(nèi)輪廓和外輪廓的對比
與外輪廓的對比

color_yan[idx1, idx2,:] = (255, 0, 0)
color_yan[idx3, idx4,:] = (0, 255, 0)

藍(lán)的是膨脹減去腐蝕的輪廓(下同),綠色的是外輪廓的效果
cv2.dilate,OpenCV-Python圖像處理,筆記,opencv,python,計(jì)算機(jī)視覺
與內(nèi)輪廓對比
紅色的內(nèi)輪廓的效果

color_yan  = cv2.imread('yan.jpg')
color_yan[idx1, idx2,:] = (255, 0, 0)
color_yan[idx5, idx6,:] = (0, 0, 255)

cv2.dilate,OpenCV-Python圖像處理,筆記,opencv,python,計(jì)算機(jī)視覺文章來源地址http://www.zghlxwxcb.cn/news/detail-620660.html

到了這里,關(guān)于opencv-python常用函數(shù)解析及參數(shù)介紹(五)——腐蝕與膨脹的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 多方面解析error D:\a\opencv-python\opencv-python\opencv\modules\imgcodecs\src \loadsave.cpp:692

    多方面解析error D:\a\opencv-python\opencv-python\opencv\modules\imgcodecs\src \loadsave.cpp:692

    遇到一個錯誤。有兩種原因?qū)е略撳e誤發(fā)生。很多博主在解決這個錯誤的時候都只提到了路徑問題,但是還有一個困擾許多人的問題沒有指出來,也是我們?nèi)菀缀雎缘模?一個是 路徑問題 這個很好解決1、路徑中不能存在中文(程序員應(yīng)該保持這個良好習(xí)慣 2、斜杠問題:要么

    2024年01月24日
    瀏覽(22)
  • Opencv-Python入門———配置opencv-python環(huán)境

    Opencv-Python入門———配置opencv-python環(huán)境

    1.1配置python環(huán)境及編譯器(Pycharm)下載 進(jìn)入Pycharm官網(wǎng)下載Pycharm?? PyCharm: the Python IDE for Professional Developers by JetBrains https://www.jetbrains.com/pycharm/ 進(jìn)入Python官網(wǎng)下載最新版本Python Download Python | Python.org https://www.python.org/downloads/ 安裝細(xì)則可參照博客 (36條消息) python,pycharm的安裝

    2024年02月11日
    瀏覽(23)
  • Python UI自動化 —— pytest常用運(yùn)行參數(shù)解析、pytest執(zhí)行順序解析

    Python UI自動化 —— pytest常用運(yùn)行參數(shù)解析、pytest執(zhí)行順序解析

    -v 用于顯示每個測試函數(shù)的執(zhí)行結(jié)果 -q 只顯示整體測試結(jié)果 -s 用于顯示測試函數(shù)中print()函數(shù)輸出 -x 在第一個錯誤或失敗的測試中立即退出 -m 只運(yùn)行帶有裝飾器配置的測試用例 -k 通過表達(dá)式運(yùn)行指定的測試用例 -h 幫助 首先來看什么參數(shù)都沒加的運(yùn)行情況 -v 用于顯示每個測

    2024年02月09日
    瀏覽(25)
  • Python爬蟲——Requests庫常用方法及參數(shù)介紹

    Requests 庫中定義了七個常用的請求方法,這些方法各自有著不同的作用,在這些請求方法中 requests.get() 與 requests.post() 方法最為常用。請求方法如下所示: 常用請求方法 方法 說明 requests.request() 構(gòu)造一個請求對象,該方法是實(shí)現(xiàn)以下各個方法的基礎(chǔ)。 requests.get() 獲取HTML網(wǎng)頁

    2024年02月16日
    瀏覽(25)
  • 【Python入門篇】——Python函數(shù)(函數(shù)介紹,函數(shù)的定義,函數(shù)的參數(shù)和函數(shù)的返回值)

    【Python入門篇】——Python函數(shù)(函數(shù)介紹,函數(shù)的定義,函數(shù)的參數(shù)和函數(shù)的返回值)

    作者簡介: 辭七七,目前大一,正在學(xué)習(xí)C/C++,Java,Python等 作者主頁: 七七的個人主頁 文章收錄專欄: Python入門,本專欄主要內(nèi)容為Python的基礎(chǔ)語法,Python中的選擇循環(huán)語句,Python函數(shù),Python的數(shù)據(jù)容器等。 歡迎大家點(diǎn)贊 ?? 收藏 ? 加關(guān)注哦!???? 函數(shù):是組織好的

    2024年02月08日
    瀏覽(25)
  • 解決opencv-python 安裝報(bào)錯 Could not build wheels for opencv-python

    但是發(fā)現(xiàn)更新完了之后還是沒用,因?yàn)橹饕蚴侨绻苯影惭bopencv默認(rèn)安裝最新版,此時找一個python3.6支持的版本就行了,如4.3.0.38,使用如下命令即可成功安裝

    2024年02月16日
    瀏覽(53)
  • Python:安裝opencv-python出錯問題ERROR: Could not build wheels for opencv-python

    Python:安裝opencv-python出錯問題ERROR: Could not build wheels for opencv-python

    筆者在安裝opencv-python的過程中遇到了如下錯誤 在安裝opencv-python的過程,筆者直接通過pip命令進(jìn)行安裝,遇到了如下問題 命令 問題 直接使用上述命令安裝的是最新版本,挑一個別的版本的opencv-python即可解決上述問題 使用命令如下 問題解決

    2024年02月11日
    瀏覽(28)
  • 安裝opencv-python

    安裝opencv-python

    1.由于之前pip install --upgrade pip出錯了,導(dǎo)致Anaconda中Scripts中pip.exe出錯 解決方式:python -m ensurepip --default-pip,獲得可行的pip.exe 可行的升級pip的方式:python -m pip install --upgrade pip 2.安裝opencv-python 嘗試從官網(wǎng)安裝,官網(wǎng)提示需要更新pip 但是更新出錯了,于是有了1問題,pip.exe不

    2024年02月06日
    瀏覽(21)
  • opencv-python 降噪

    opencv-python 降噪

    定義 圖像噪聲是指存在于圖像數(shù)據(jù)中的 不必要的或多余的干擾信息 。噪聲的存在嚴(yán)重影響了圖像的質(zhì)量,因此在圖像增強(qiáng)處理和分類處理之前,必須予以糾正。 圖像中各種妨礙人們對其信息接受的因素即可稱為圖像噪聲 。噪聲在理論上可以定義為“不可預(yù)測,只能用概率

    2024年02月03日
    瀏覽(21)
  • opencv-python安裝

    opencv-python安裝

    OpenCV就是學(xué)習(xí)計(jì)算機(jī)視覺的過程中經(jīng)常用到的工具,opencv降低了計(jì)算機(jī)視覺的學(xué)習(xí)門檻。隨著機(jī)器學(xué)習(xí)、深度學(xué)習(xí)等技術(shù)的發(fā)展,Python龐大的擴(kuò)展庫為Python用戶在編程過程中提供了極大的便利,opencv-python便是其中一員。在實(shí)際使用opencv-python擴(kuò)展庫的過程中,更多的讀者關(guān)心

    2024年02月04日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包