python 實(shí)現(xiàn)圖片修復(fù)(可用于去水?。?/h1>
更新時(shí)間:2020年11月19日 16:52:26 作者:vipstore
這篇文章主要介紹了python 實(shí)現(xiàn)圖片修復(fù)(可用于去水?。瑤椭蠹腋玫睦斫夂褪褂胦pencv庫(kù),感興趣的朋友可以了解下
在現(xiàn)實(shí)的生活中,我們可能會(huì)遇到一些美好的或是珍貴的圖片被噪聲干擾,比如舊照片的折痕,比如鏡頭上的灰塵或污漬,更或者是某些我們想為我所用但有討厭水印,那么有沒(méi)有一種辦法可以消除這些噪聲呢?
答案是肯定的,依然是被我們用了無(wú)數(shù)次的OpenCV這款優(yōu)秀的框架。
效果預(yù)覽

圖片修復(fù)原理
那OpenCV究竟是怎么實(shí)現(xiàn)的,簡(jiǎn)單的來(lái)說(shuō)就是開(kāi)發(fā)者標(biāo)定噪聲的特征,在使用噪聲周圍的顏色特征推理出應(yīng)該修復(fù)的圖片的顏色,從而實(shí)現(xiàn)圖片修復(fù)的。
程序?qū)崿F(xiàn)解析
- 標(biāo)定噪聲的特征,使用cv2.inRange二值化標(biāo)識(shí)噪聲對(duì)圖片進(jìn)行二值化處理,具體代碼:cv2.inRange(img, np.array([240, 240, 240]), np.array([255, 255, 255])),把[240, 240, 240]~[255, 255, 255]以外的顏色處理為0;
- 使用OpenCV的dilate方法,擴(kuò)展特征的區(qū)域,優(yōu)化圖片處理效果;
- 使用inpaint方法,把噪聲的mask作為參數(shù),推理并修復(fù)圖片;
完整代碼
#coding=utf-8
#圖片修復(fù)
import cv2
import numpy as np
path = "img/inpaint.png"
img = cv2.imread(path)
hight, width, depth = img.shape[0:3]
#圖片二值化處理,把[240, 240, 240]~[255, 255, 255]以外的顏色變成0
thresh = cv2.inRange(img, np.array([240, 240, 240]), np.array([255, 255, 255]))
#創(chuàng)建形狀和尺寸的結(jié)構(gòu)元素
kernel = np.ones((3, 3), np.uint8)
#擴(kuò)張待修復(fù)區(qū)域
hi_mask = cv2.dilate(thresh, kernel, iterations=1)
specular = cv2.inpaint(img, hi_mask, 5, flags=cv2.INPAINT_TELEA)
cv2.namedWindow("Image", 0)
cv2.resizeWindow("Image", int(width / 2), int(hight / 2))
cv2.imshow("Image", img)
cv2.namedWindow("newImage", 0)
cv2.resizeWindow("newImage", int(width / 2), int(hight / 2))
cv2.imshow("newImage", specular)
cv2.waitKey(0)
cv2.destroyAllWindows()
以上就是python 實(shí)現(xiàn)圖片修復(fù)(可用于去水?。┑脑敿?xì)內(nèi)容,更多關(guān)于python 圖片修復(fù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
-
Python中私有屬性“_“下劃線和“__“雙下劃線區(qū)別
本文主要介紹了Python中私有屬性“_“下劃線和“__“雙下劃線區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧 2023-03-03
-
Python九九乘法表的七種實(shí)現(xiàn)方式詳解
在Python中,輸出九九乘法表是一道非?;A(chǔ)的題目,但對(duì)于初學(xué)者來(lái)說(shuō),也是一個(gè)很好的練習(xí)和鞏固基礎(chǔ)知識(shí)的機(jī)會(huì),這篇文章主要給大家介紹了關(guān)于Python九九乘法表的七種實(shí)現(xiàn)方式,需要的朋友可以參考下 2023-09-09
-
Python內(nèi)置函數(shù)locals()的具體示例
本文主要介紹了Python中的內(nèi)置函數(shù)locals()的具體用法和應(yīng)用場(chǎng)景,locals()函數(shù)用于獲取當(dāng)前局部符號(hào)表的字典,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧 2024-09-09
-
Python標(biāo)準(zhǔn)庫(kù)pathlib操作目錄和文件
這篇文章主要為大家介紹了Python標(biāo)準(zhǔn)庫(kù)pathlib操作目錄和文件的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步 2021-11-11
-
Python實(shí)現(xiàn)模擬錕斤拷等各類亂碼詳解
說(shuō)到亂碼問(wèn)題就不得不提到錕斤拷,這算是非常常見(jiàn)的一種亂碼形式,那么它到底是經(jīng)過(guò)何種錯(cuò)誤操作產(chǎn)生的呢?本文我們就來(lái)一步步探究 2023-02-02
-
Python定義一個(gè)跨越多行的字符串的多種方法小結(jié)
今天小編就為大家分享一篇Python定義一個(gè)跨越多行的字符串的多種方法小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧 2018-07-07
-
教你如何使用Python開(kāi)發(fā)一個(gè)釘釘群應(yīng)答機(jī)器人
在聊天工具大肆侵入我們生活各個(gè)方面的今天,各種消息無(wú)時(shí)無(wú)刻不在侵?jǐn)_我們的每一寸時(shí)間,這種情況下,一個(gè)聊天的機(jī)器人就很有必要了.今天,我們來(lái)學(xué)習(xí)一下使用 Python 開(kāi)發(fā)一個(gè)釘釘?shù)膽?yīng)答機(jī)器人,助你「人生苦短,少回消息」,需要的朋友可以參考下 2021-06-06
-
python中關(guān)于對(duì)super()函數(shù)疑問(wèn)解惑
Python中的super()是用于調(diào)用父類(或父類的父類...)方法的函數(shù),主要用于多繼承,單繼承問(wèn)題不大,下面這篇文章主要給大家介紹了關(guān)于python中關(guān)于對(duì)super()函數(shù)疑問(wèn)解惑的相關(guān)資料,需要的朋友可以參考下 2022-08-08
最新評(píng)論
在現(xiàn)實(shí)的生活中,我們可能會(huì)遇到一些美好的或是珍貴的圖片被噪聲干擾,比如舊照片的折痕,比如鏡頭上的灰塵或污漬,更或者是某些我們想為我所用但有討厭水印,那么有沒(méi)有一種辦法可以消除這些噪聲呢?
答案是肯定的,依然是被我們用了無(wú)數(shù)次的OpenCV這款優(yōu)秀的框架。
效果預(yù)覽

圖片修復(fù)原理
那OpenCV究竟是怎么實(shí)現(xiàn)的,簡(jiǎn)單的來(lái)說(shuō)就是開(kāi)發(fā)者標(biāo)定噪聲的特征,在使用噪聲周圍的顏色特征推理出應(yīng)該修復(fù)的圖片的顏色,從而實(shí)現(xiàn)圖片修復(fù)的。
程序?qū)崿F(xiàn)解析
- 標(biāo)定噪聲的特征,使用cv2.inRange二值化標(biāo)識(shí)噪聲對(duì)圖片進(jìn)行二值化處理,具體代碼:cv2.inRange(img, np.array([240, 240, 240]), np.array([255, 255, 255])),把[240, 240, 240]~[255, 255, 255]以外的顏色處理為0;
- 使用OpenCV的dilate方法,擴(kuò)展特征的區(qū)域,優(yōu)化圖片處理效果;
- 使用inpaint方法,把噪聲的mask作為參數(shù),推理并修復(fù)圖片;
完整代碼
#coding=utf-8
#圖片修復(fù)
import cv2
import numpy as np
path = "img/inpaint.png"
img = cv2.imread(path)
hight, width, depth = img.shape[0:3]
#圖片二值化處理,把[240, 240, 240]~[255, 255, 255]以外的顏色變成0
thresh = cv2.inRange(img, np.array([240, 240, 240]), np.array([255, 255, 255]))
#創(chuàng)建形狀和尺寸的結(jié)構(gòu)元素
kernel = np.ones((3, 3), np.uint8)
#擴(kuò)張待修復(fù)區(qū)域
hi_mask = cv2.dilate(thresh, kernel, iterations=1)
specular = cv2.inpaint(img, hi_mask, 5, flags=cv2.INPAINT_TELEA)
cv2.namedWindow("Image", 0)
cv2.resizeWindow("Image", int(width / 2), int(hight / 2))
cv2.imshow("Image", img)
cv2.namedWindow("newImage", 0)
cv2.resizeWindow("newImage", int(width / 2), int(hight / 2))
cv2.imshow("newImage", specular)
cv2.waitKey(0)
cv2.destroyAllWindows()
以上就是python 實(shí)現(xiàn)圖片修復(fù)(可用于去水?。┑脑敿?xì)內(nèi)容,更多關(guān)于python 圖片修復(fù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python中私有屬性“_“下劃線和“__“雙下劃線區(qū)別
本文主要介紹了Python中私有屬性“_“下劃線和“__“雙下劃線區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
Python九九乘法表的七種實(shí)現(xiàn)方式詳解
在Python中,輸出九九乘法表是一道非?;A(chǔ)的題目,但對(duì)于初學(xué)者來(lái)說(shuō),也是一個(gè)很好的練習(xí)和鞏固基礎(chǔ)知識(shí)的機(jī)會(huì),這篇文章主要給大家介紹了關(guān)于Python九九乘法表的七種實(shí)現(xiàn)方式,需要的朋友可以參考下2023-09-09
Python內(nèi)置函數(shù)locals()的具體示例
本文主要介紹了Python中的內(nèi)置函數(shù)locals()的具體用法和應(yīng)用場(chǎng)景,locals()函數(shù)用于獲取當(dāng)前局部符號(hào)表的字典,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-09-09
Python標(biāo)準(zhǔn)庫(kù)pathlib操作目錄和文件
這篇文章主要為大家介紹了Python標(biāo)準(zhǔn)庫(kù)pathlib操作目錄和文件的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-11-11
Python實(shí)現(xiàn)模擬錕斤拷等各類亂碼詳解
說(shuō)到亂碼問(wèn)題就不得不提到錕斤拷,這算是非常常見(jiàn)的一種亂碼形式,那么它到底是經(jīng)過(guò)何種錯(cuò)誤操作產(chǎn)生的呢?本文我們就來(lái)一步步探究2023-02-02
Python定義一個(gè)跨越多行的字符串的多種方法小結(jié)
今天小編就為大家分享一篇Python定義一個(gè)跨越多行的字符串的多種方法小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07
教你如何使用Python開(kāi)發(fā)一個(gè)釘釘群應(yīng)答機(jī)器人
在聊天工具大肆侵入我們生活各個(gè)方面的今天,各種消息無(wú)時(shí)無(wú)刻不在侵?jǐn)_我們的每一寸時(shí)間,這種情況下,一個(gè)聊天的機(jī)器人就很有必要了.今天,我們來(lái)學(xué)習(xí)一下使用 Python 開(kāi)發(fā)一個(gè)釘釘?shù)膽?yīng)答機(jī)器人,助你「人生苦短,少回消息」,需要的朋友可以參考下2021-06-06
python中關(guān)于對(duì)super()函數(shù)疑問(wèn)解惑
Python中的super()是用于調(diào)用父類(或父類的父類...)方法的函數(shù),主要用于多繼承,單繼承問(wèn)題不大,下面這篇文章主要給大家介紹了關(guān)于python中關(guān)于對(duì)super()函數(shù)疑問(wèn)解惑的相關(guān)資料,需要的朋友可以參考下2022-08-08

