最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python-OpenCV中的cv2.inpaint()函數(shù)的使用

 更新時(shí)間:2021年06月17日 16:48:44   作者:Rogn  
大多數(shù)人會(huì)在家里放一些舊的退化照片,上面有一些黑點(diǎn),一些筆畫等。你有沒(méi)有想過(guò)恢復(fù)它?本文就來(lái)介紹一下方法,感興趣的可以了解一下

概念

修復(fù)是圖像插值。數(shù)字修復(fù)算法在圖像插值,照片恢復(fù),縮放和超分辨率等方面具有廣泛的應(yīng)用。

大多數(shù)人會(huì)在家里放一些舊的退化照片,上面有一些黑點(diǎn),一些筆畫等。你有沒(méi)有想過(guò)恢復(fù)它?我們不能簡(jiǎn)單地在繪畫工具中擦除它們,因?yàn)樗鼘⒑?jiǎn)單地用白色結(jié)構(gòu)替換黑色結(jié)構(gòu),這是沒(méi)有用的。在這些情況下,使用稱為圖像修復(fù)的技術(shù)?;舅悸泛芎?jiǎn)單:用鄰近的像素替換那些壞標(biāo)記,使其看起來(lái)像是鄰居(取自維基百科),考慮下面顯示的圖像:

庫(kù)函數(shù)

dst = cv2.inpaint(src,mask, inpaintRadius,flags)

參數(shù)是:

  • src:輸入8位1通道或3通道圖像。
  • inpaintMask:修復(fù)掩碼,8位1通道圖像。非零像素表示需要修復(fù)的區(qū)域。
  • dst:輸出與src具有相同大小和類型的圖像。
  • inpaintRadius:算法考慮的每個(gè)點(diǎn)的圓形鄰域的半徑。
  • flags:
    • INPAINT_NS基于Navier-Stokes的方法
    • Alexandru Telea的INPAINT_TELEA方法

實(shí)現(xiàn)

為此目的設(shè)計(jì)了幾種算法,OpenCV提供了兩種算法。兩者都可以通過(guò)相同的函數(shù)訪問(wèn),cv2.inpaint()。

第一種算法基于Alexandru Telea于2004年發(fā)表的“基于快速行進(jìn)方法的圖像修復(fù)技術(shù)”。它基于快速行進(jìn)方法??紤]圖像中要修復(fù)的區(qū)域。算法從該區(qū)域的邊界開(kāi)始,然后進(jìn)入?yún)^(qū)域內(nèi),逐漸填充邊界中的所有內(nèi)容。它需要在鄰近的像素周圍的一個(gè)小鄰域進(jìn)行修復(fù)。該像素由鄰居中所有已知像素的歸一化加權(quán)和代替。選擇權(quán)重是一個(gè)重要的問(wèn)題。對(duì)于靠近該點(diǎn)的那些像素,靠近邊界的法線和位于邊界輪廓上的像素,給予更多的權(quán)重。一旦像素被修復(fù),它將使用快速行進(jìn)方法移動(dòng)到下一個(gè)最近的像素。 FMM確保首先修復(fù)已知像素附近的像素,這樣它就像手動(dòng)啟發(fā)式操作一樣工作。使用標(biāo)志cv2.INPAINT_TELEA啟用此算法。

第二種算法基于Bertalmio,Marcelo,Andrea L. Bertozzi和Guillermo Sapiro于2001年撰寫的“Navier-Stokes,流體動(dòng)力學(xué)和圖像和視頻修補(bǔ)”一文。該算法基于流體動(dòng)力學(xué)并利用偏微分方程?;驹瓌t是heurisitic。它首先沿著已知區(qū)域的邊緣行進(jìn)到未知區(qū)域(因?yàn)檫吘壥沁B續(xù)的)。它繼續(xù)等照片(連接具有相同強(qiáng)度的點(diǎn)的線,就像輪廓連接具有相同高度的點(diǎn)一樣),同時(shí)在修復(fù)區(qū)域的邊界處匹配漸變矢量。為此,使用來(lái)自流體動(dòng)力學(xué)的一些方法。獲得顏色后,填充顏色以減少該區(qū)域的最小差異。使用標(biāo)志cv2.INPAINT_NS啟用此算法。

代碼

我們需要?jiǎng)?chuàng)建一個(gè)與輸入圖像大小相同的掩碼,其中非零像素對(duì)應(yīng)于要修復(fù)的區(qū)域。其他一切都很簡(jiǎn)單。我的圖像因一些黑色筆畫而降級(jí)(我手動(dòng)添加)。我用Paint工具創(chuàng)建了相應(yīng)的筆觸,同時(shí)得到mask。

import numpy as np
from matplotlib import pyplot as plt
import cv2

img = cv2.imread('OpenCV_Logo_B.png')     # input
mask = cv2.imread('OpenCV_Logo_C.png',0)  # mask

dst_TELEA = cv2.inpaint(img,mask,3,cv2.INPAINT_TELEA)
dst_NS = cv2.inpaint(img,mask,3,cv2.INPAINT_NS)

plt.subplot(221), plt.imshow(img)
plt.title('degraded image')
plt.subplot(222), plt.imshow(mask, 'gray')
plt.title('mask image')
plt.subplot(223), plt.imshow(dst_TELEA)
plt.title('TELEA')
plt.subplot(224), plt.imshow(dst_NS)
plt.title('NS')

plt.tight_layout()
plt.show()

這是原圖文件和掩碼文件:Pictures

輸出:

這是輸出。第一個(gè)是降級(jí)的OpenCV徽標(biāo),第二個(gè)圖片是運(yùn)行FMM所需的掩碼。最后兩張照片是修補(bǔ)的結(jié)果。不確定,但我認(rèn)為兩種修補(bǔ)方法之間沒(méi)有任何區(qū)別,至少對(duì)于當(dāng)前輸入而言。

參考鏈接:

1、OpenCV Image Inpainting官方文檔 https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_photo/py_inpainting/py_inpainting.html

2、https://www.bogotobogo.com/python/OpenCV_Python/python_opencv3_Image_reconstruction_Inpainting_Interpolation.php

到此這篇關(guān)于Python-OpenCV中的cv2.inpaint()函數(shù)的使用的文章就介紹到這了,更多相關(guān)OpenCV cv2.inpaint()函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中跳出循環(huán)的兩種方法

    Python中跳出循環(huán)的兩種方法

    在 Python 中,跳出循環(huán)通常指的是使用 break 語(yǔ)句來(lái)結(jié)束一個(gè)循環(huán)結(jié)構(gòu),比如 for 循環(huán)或 while 循環(huán),當(dāng)程序執(zhí)行到 break 語(yǔ)句時(shí),循環(huán)會(huì)立即終止,程序會(huì)繼續(xù)執(zhí)行循環(huán)后面的代碼,本文給大家介紹了Python中跳出循環(huán)的兩種方法,需要的朋友可以參考下
    2024-09-09
  • python二維圖制作的實(shí)例代碼

    python二維圖制作的實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于python二維圖制作的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • python爬蟲之urllib,偽裝,超時(shí)設(shè)置,異常處理的方法

    python爬蟲之urllib,偽裝,超時(shí)設(shè)置,異常處理的方法

    今天小編就為大家分享一篇python爬蟲之urllib,偽裝,超時(shí)設(shè)置,異常處理的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • python判斷一個(gè)變量是否已經(jīng)設(shè)置的方法

    python判斷一個(gè)變量是否已經(jīng)設(shè)置的方法

    這篇文章主要介紹了python判斷一個(gè)變量是否已經(jīng)設(shè)置的方法,有需要的朋友們可以跟著學(xué)習(xí)參考下。
    2020-08-08
  • python 函數(shù)中的內(nèi)置函數(shù)及用法詳解

    python 函數(shù)中的內(nèi)置函數(shù)及用法詳解

    這篇文章主要介紹了python 函數(shù)中的內(nèi)置函數(shù) 及用法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Python循環(huán)語(yǔ)句之break與continue的用法

    Python循環(huán)語(yǔ)句之break與continue的用法

    這篇文章主要介紹了Python循環(huán)語(yǔ)句之break與continue的用法,是Python入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-10-10
  • python 利用jinja2模板生成html代碼實(shí)例

    python 利用jinja2模板生成html代碼實(shí)例

    這篇文章主要介紹了python 利用jinja2模板生成html代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • 使用Python快速遍歷文件夾下所有文件的方法總結(jié)

    使用Python快速遍歷文件夾下所有文件的方法總結(jié)

    在日常的編程工作中,我們經(jīng)常會(huì)遇到需要遍歷文件夾下所有文件的情況,無(wú)論是處理大量的數(shù)據(jù)文件、進(jìn)行文件系統(tǒng)的分析,還是實(shí)現(xiàn)復(fù)雜的自動(dòng)化任務(wù),高效地遍歷文件夾下的所有文件都是一項(xiàng)非常重要的技能,在本文中,我們將深入探討如何使用 Python 快速遍歷文件夾下的所有文件
    2024-11-11
  • Jacobi迭代算法的Python實(shí)現(xiàn)詳解

    Jacobi迭代算法的Python實(shí)現(xiàn)詳解

    這篇文章主要介紹了Jacobi迭代算法的Python實(shí)現(xiàn)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-06-06
  • python利用TextBlob庫(kù)實(shí)現(xiàn)輕松分析文本情感

    python利用TextBlob庫(kù)實(shí)現(xiàn)輕松分析文本情感

    TextBlob是一個(gè)基于NLTK(Natural Language Toolkit)和Pattern庫(kù)的Python庫(kù),它提供了一系列方便的接口和方法來(lái)處理文本數(shù)據(jù),下面我們就來(lái)學(xué)習(xí)一下如何利用TextBlob庫(kù)實(shí)現(xiàn)輕松分析文本情感吧
    2023-12-12

最新評(píng)論

若羌县| 张家界市| 富裕县| 津市市| 灯塔市| 北安市| 南木林县| 临汾市| 商都县| 固镇县| 全州县| 青岛市| 桐庐县| 浦东新区| 江山市| 南涧| 和田县| 仁怀市| 兴义市| 通山县| 阜新市| 西林县| 汉寿县| 库尔勒市| 江口县| 文安县| 西畴县| 福鼎市| 绥芬河市| 崇文区| 江川县| 富锦市| 淳化县| 东阿县| 吉木乃县| 如皋市| 济南市| 庆阳市| 徐汇区| 郎溪县| 屯昌县|