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

圖像處理:基于cv2.inpaint()圖像修補

這篇具有很好參考價值的文章主要介紹了圖像處理:基于cv2.inpaint()圖像修補。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言

今天我們將學(xué)習(xí)如何通過一種“修復(fù)”的方法消除舊照片中的小噪音,筆畫等。當(dāng)然,經(jīng)過我的測試你也可以將其用于削弱混雜了其他的顏色的圖像。

實驗背景

大多數(shù)人家都會有一些舊的的舊化照片,上面有黑點,一些筆觸等。你是否曾經(jīng)想過將其還原?我們不能簡單地在繪畫工具中擦除它們,因為它將簡單地用白色結(jié)構(gòu)代替黑色結(jié)構(gòu),這是沒有用的。在這些情況下,將使用一種稱為圖像修復(fù)的技術(shù)?;舅枷牒芎唵危河酶浇南袼靥鎿Q那些不良區(qū)域,使其看起來和鄰近的協(xié)調(diào)??紤]下面顯示的圖像(摘自Wikipedia)。

圖像處理:基于cv2.inpaint()圖像修補

同樣的,今天我在這里也要進行一些拓展,采用我的方法也可以用于削弱混入了圖像中的其他顏色。

獲取圖像的掩膜圖

下面的圖片是經(jīng)過人臉檢測后的圖片,現(xiàn)在我并不想要它這個框。

圖像處理:基于cv2.inpaint()圖像修補

運行下面的腳本進行顏色提取

import cv2
import numpy as np
import pyps.pyzjr.utility as zjr

def empty(a):
    pass

path = 'AI.png'
cv2.namedWindow("TrackBars")
cv2.resizeWindow("TrackBars",640,250)
cv2.createTrackbar("Hue Min","TrackBars",58,179,empty)
cv2.createTrackbar("Hue Max","TrackBars",60,179,empty)
cv2.createTrackbar("Sat Min","TrackBars",73,255,empty)
cv2.createTrackbar("Sat Max","TrackBars",255,255,empty)
cv2.createTrackbar("Val Min","TrackBars",36,255,empty)
cv2.createTrackbar("Val Max","TrackBars",255,255,empty)
#經(jīng)過測試得到的掩碼58 60 73 255 36 255
while True:
    img = cv2.imread(path)
    #圖像轉(zhuǎn)化為HSV格式,H:色調(diào)S:飽和度V:明度
    imgHSV = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
    h_min = cv2.getTrackbarPos("Hue Min","TrackBars")
    h_max = cv2.getTrackbarPos("Hue Max", "TrackBars")
    s_min = cv2.getTrackbarPos("Sat Min", "TrackBars")
    s_max = cv2.getTrackbarPos("Sat Max", "TrackBars")
    v_min = cv2.getTrackbarPos("Val Min", "TrackBars")
    v_max = cv2.getTrackbarPos("Val Max", "TrackBars")
    print(h_min,h_max,s_min,s_max,v_min,v_max)

    #創(chuàng)建一個蒙版,提取需要的顏色為白色,不需要的顏色為白色
    lower = np.array([h_min,s_min,v_min])
    upper = np.array([h_max,s_max,v_max])
    mask = cv2.inRange(imgHSV,lower,upper)
    imgResult = cv2.bitwise_and(img,img,mask=mask)

    imgStack = zjr.stackImages(0.7,([img,imgHSV],[mask,imgResult]))
    cv2.imshow("Stacked Images", imgStack)

    cv2.waitKey(1)

注:import pyps.pyzjr.utility as zjr,此為我的私庫函數(shù),大家可以使用matplotlib.pyplot as plt代替此功能。

這里有關(guān)于HSV的一些介紹,下面是一些常見顏色的HSV值,大家可以參考著在軌跡欄中進行調(diào)整,順序都是從上到下,具體還是要根據(jù)實際情況進行調(diào)整。

圖像處理:基于cv2.inpaint()圖像修補

詳解cv2.inpaint()

cv2.inpaint是用于圖像修復(fù)的函數(shù)。它可以自動根據(jù)給定的掩膜(mask)來修復(fù)圖像,即用圖像中的其他部分來填充掩膜部分的像素。函數(shù)的語法如下:

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

其中的參數(shù)的含義如下:?

  • src: 要修復(fù)的原始圖像
  • inpaintMask: 修復(fù)圖像的掩膜,即需要被修復(fù)的像素區(qū)域
  • inpaintRadius: 修復(fù)半徑,即掩膜的像素周圍需要參考的區(qū)域半徑
  • flags: 修復(fù)算法的標(biāo)志。有兩個可選值:cv2.INPAINT_TELEA和cv2.INPAINT_NS。默認(rèn)為cv2.INPAINT_TELEA。

其中,cv2.INPAINT_TELEA和cv2.INPAINT_NS分別代表基于快速行進算法(Fast Marching Method)和基于Navier-Stokes方程(Navier-Stokes equation)的修復(fù)算法,前者更快、后者更準(zhǔn)確。

修補圖像

接著,我們需要將上面腳本的這幾行放進下面的測試代碼中。

lower = np.array([h_min,s_min,v_min])
upper = np.array([h_max,s_max,v_max])
mask = cv2.inRange(imgHSV,lower,upper)
imgResult = cv2.bitwise_and(img,img,mask=mask)

將調(diào)整好的值,從控制臺中copy給h_min, h_max, s_min, s_max, v_min, v_max

import cv2
import numpy as np
import pyps.pyzjr.utility as zjr

path = 'AI.png'
img = cv2.imread(path)
Grayimg = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)

h_min, h_max, s_min, s_max, v_min, v_max = 58, 60, 73, 255, 36, 255
lower = np.array([h_min,s_min,v_min])
upper = np.array([h_max,s_max,v_max])
imgHSV = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
mask_black = cv2.inRange(imgHSV, lower, upper)
imgResult = cv2.bitwise_and(img,img,mask=mask_black)
dst = cv2.inpaint(img, mask_black, 10, cv2.INPAINT_TELEA)
mask_white = cv2.bitwise_not(mask_black)

stackimg=zjr.stackImages(0.7,([img,imgResult],[mask_white,dst]))
cv2.imshow("repair_img",stackimg)
cv2.imwrite("AI2.png",dst)
cv2.waitKey(0)

運行結(jié)果如下所示, 效果比較不錯,整體看來只有頭發(fā)那里有些許模糊。

圖像處理:基于cv2.inpaint()圖像修補

改進建議

如果你有現(xiàn)成的掩膜圖,那么去除的效果會更好;如果你需要遍歷文件進行修改,所獲得的HSV值并不適用于每一張圖,建議單獨進行處理。

改進方式:

  • 修改cv2.inpaint()參數(shù),修復(fù)半徑可以在合適的范圍內(nèi)進行修改,修復(fù)算法的標(biāo)志,有兩種方式可選cv2.INPAINT_TELEA和cv2.INPAINT_NS,其特點可以看看上面給出的詳解,實際應(yīng)用中,需要兩種都試試,并不是cv2.INPAINT_NS就對這種圖更準(zhǔn)確。
  • 使用顏色提取腳本,可以將HSV值稍微調(diào)整大一些,可能會包含了一些其他的顏色,但對于我們的目標(biāo)顏色(綠色)能夠提取的更加完整,尤其是面對顏色比較復(fù)雜的場景,比如熱力圖,這個可以后期個人去嘗試。
  • 使用np切片的方法,對掩膜圖特定的區(qū)域進行保護。
x_threshold = 500
mask_black[:, x_threshold:] = 0
  • 如果是用于檢測,對于部分不是很理想的圖像,可以使用ps細(xì)致修改,當(dāng)然這是你在用來我這個方法后,作為壓箱底的措施。

總結(jié)

效果是達到了我的預(yù)期,本來按照我個人的想法也是將目標(biāo)顏色的附近顏色進行替換,那這不得不遍歷圖像得像素點,但還好有Opencv中有inpaint()函數(shù),得以實現(xiàn)本次實驗。在這里我們就不討論它的實現(xiàn)原理了,大家在CSDN上可以搜索到很多得資料。

圖像處理:基于cv2.inpaint()圖像修補
實驗效果圖

2023年5月7日修正

出現(xiàn)了一個bug,今天在測試時,文字為白色遮蓋了我原本的圖像,當(dāng)我對圖像進行上面的操作時,發(fā)現(xiàn)文字沒有被消去,反而變?yōu)榱撕谏?,如果要去消除,還需要再進行一次黑色文字的顏色提取,再用圖像修補才達到我的預(yù)期。文章來源地址http://www.zghlxwxcb.cn/news/detail-444096.html

到了這里,關(guān)于圖像處理:基于cv2.inpaint()圖像修補的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • opencv(15) 圖像平滑處理之二:cv2.GaussianBlur()高斯濾波

    opencv(15) 圖像平滑處理之二:cv2.GaussianBlur()高斯濾波

    高斯濾波是一種線性平滑濾波,適用于消除高斯噪聲,廣泛應(yīng)用于圖像處理的減噪過程。 高斯模板是通過對二維高斯函數(shù)進行采樣(高斯模糊的卷積核里的數(shù)值滿足高斯分布)、量化并歸一化得到的,它考慮了鄰域像素位置的影響,距離當(dāng)前被平滑像素越近的點,加權(quán)系數(shù)越大

    2024年02月10日
    瀏覽(97)
  • opencv-34 圖像平滑處理-2D 卷積 cv2.filter2D()

    opencv-34 圖像平滑處理-2D 卷積 cv2.filter2D()

    2D卷積是一種圖像處理和計算機視覺中常用的操作,用于在圖像上應(yīng)用濾波器或卷積核,從而對圖像進行特征提取、平滑處理或邊緣檢測等操作。 在2D卷積中,圖像和卷積核都是二維的矩陣或數(shù)組。卷積操作將卷積核在圖像上滑動,對每個局部區(qū)域進行元素級別的乘法和累加

    2024年02月14日
    瀏覽(29)
  • python 圖像處理——關(guān)于plt.imshow顯示cv2.imread讀取的圖像有“色差”、“發(fā)藍(lán)”問題的解決方法

    python 圖像處理——關(guān)于plt.imshow顯示cv2.imread讀取的圖像有“色差”、“發(fā)藍(lán)”問題的解決方法

    使用cv2.imread()讀取圖像時,默認(rèn)彩色圖像的三通道順序為B、G、R,這與我們所熟知的RGB中的R通道和B通道正好互換位置了。 而使用plt.imshow()函數(shù)卻默認(rèn)顯示圖像的通道順序為R、G、B,導(dǎo)致圖像出現(xiàn)色差發(fā)藍(lán)。 彩色圖像出現(xiàn)色差代碼: 運行結(jié)果如圖1-1所示,其顏色偏藍(lán),怪嚇

    2024年02月01日
    瀏覽(23)
  • Inpaint Anything:一鍵進行多種圖像修補

    本文分享自華為云社區(qū)《繪制一切》,作者: 雨落無痕 。 相關(guān)鏈接: Notebook案例地址:繪制一切 AI Gallery:https://developer.huaweicloud.com/develop/aigallery/home.html 也可通過AI Gallery,搜索【繪制一切】一鍵體驗! 通過一鍵點擊標(biāo)記選定對象,即可實現(xiàn)移除指定對象、填補指定對象、

    2024年02月15日
    瀏覽(12)
  • 《數(shù)字圖像處理-OpenCV/Python》連載(1)前言

    《數(shù)字圖像處理-OpenCV/Python》連載(1)前言

    本書京東優(yōu)惠購書鏈接:https://item.jd.com/14098452.html 寫作背景 編寫本書的初衷,源自作者學(xué)習(xí)數(shù)字圖像處理的經(jīng)歷。 在創(chuàng)新實驗班開設(shè)的專業(yè)創(chuàng)新教育課程中,我選擇的是數(shù)字圖像處理方向。老師向我推薦的教材是岡薩雷斯的《數(shù)字圖像處理》。學(xué)習(xí)的開始階段非常困難。教

    2024年02月11日
    瀏覽(161)
  • Open CV 圖像處理基礎(chǔ):(四)使用 Open CV 在 Java 中進行基本的圖片模糊處理

    Open CV 圖像處理基礎(chǔ):(四)使用 Open CV 在 Java 中進行基本的圖片模糊處理

    在Java中使用OpenCV進行圖片模糊處理,主要可以通過以下幾種方式: 均值模糊(Averaging Blur): 通過計算核窗口內(nèi)所有像素的平均值來模糊圖像。這種方法可以移除圖像噪聲,但也會使圖像細(xì)節(jié)變得模糊。 這里src是原始圖像,dst是模糊后的圖像,new Size(10, 10)定義了核窗口的大

    2024年01月22日
    瀏覽(20)
  • 【CV學(xué)習(xí)筆記】圖像預(yù)處理warpaffine

    【CV學(xué)習(xí)筆記】圖像預(yù)處理warpaffine

    在學(xué)習(xí)圖像預(yù)處理的時候發(fā)現(xiàn),之前用的圖像預(yù)處理方法一般為 resize和letter box,這兩種方法比較低效,后來在手寫AI中接觸到了warpaffine,只需要一步就能夠?qū)D像進行預(yù)處理,同時還能很方便的進行cuda加速,于是便記錄下來。 歡迎正在學(xué)習(xí)或者想學(xué)的CV的同學(xué)進群一起討論與

    2023年04月08日
    瀏覽(69)
  • open cv學(xué)習(xí) (五) 圖像的閾值處理

    demo1 demo2 demo3 demo4 demo5 demo6 demo7 demo8

    2024年02月12日
    瀏覽(12)
  • Open CV 圖像處理基礎(chǔ):(五)Java 使用 Open CV 的繪圖函數(shù)

    Open CV 圖像處理基礎(chǔ):(五)Java 使用 Open CV 的繪圖函數(shù)

    使用 Open CV 在 Java 中對圖片使用繪圖函數(shù),分別繪制矩形、斜線、圓形、橢圓形以及添加文本 繪制矩形 參數(shù)說明: Mat img: 要繪制矩形的圖像。 Point pt1: 矩形的一個頂點。 Point pt2: 與 pt1 相對的矩形的另一個頂點(不是矩形的對角線上的相鄰頂點)。 Scalar color: 矩形的顏色。

    2024年02月02日
    瀏覽(21)
  • 數(shù)字圖像處理 --- 相機的內(nèi)參與外參(CV學(xué)習(xí)筆記)

    數(shù)字圖像處理 --- 相機的內(nèi)參與外參(CV學(xué)習(xí)筆記)

    Pinhole Camera Model(針孔相機模型) ????????針孔相機是一種沒有鏡頭、只有一個小光圈的簡單相機。 光線穿過光圈并在相機的另一側(cè)呈現(xiàn)倒立的圖像。為了建模方便,我們可以把 物理成像平面 (image plane)上的圖像移到 實際場景 (3D object)和 焦點 (focal point)之間,把他想象成

    2024年02月12日
    瀏覽(26)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包