亮度較高的圖像區(qū)域的二值化閾值通常會(huì)較高,而亮度較低的圖像區(qū)域的二值化閾值則會(huì)相適應(yīng)地變小在灰度圖像中,灰度值變化明顯的區(qū)域往往是物體的輪廓,所以將圖像分成一小塊一小塊的去計(jì)算閾值往往會(huì)得出圖像的輪廓 。因此函數(shù)adaptiveThreshold除了將灰度圖像二值化,也可以進(jìn)行邊緣提取之所以能進(jìn)行邊緣提取,是因?yàn)楫?dāng)block很小時(shí),如block_size=3 or 5 or 7時(shí),“自適應(yīng)”的程度很高,即容易出現(xiàn)block里面的像素值都差不多,這樣便無法二值化,而只能在邊緣等梯度大的地方實(shí)現(xiàn)二值化,結(jié)果顯得它是邊緣提取函數(shù)當(dāng)把blockSize設(shè)為比較大的值時(shí),如blockSize=21 or 31 or 41時(shí),adaptiveThreshold便是二值化函數(shù)blockSize必須為大于1的奇數(shù)(原理老猿還沒弄清楚) ,如果使用平均值方法,平均值mean為180,差值delta為10,maxValue設(shè)為255 。那么灰度小于170的像素為0,大于等于170的像素為255,如果是反向二值化,灰度小于170的像素為255,大于等于170的像素為0案例:
import cv2
img = cv2.imread(r’F:screenpic1.jpg’,cv2.IMREAD_GRAYSCALE)
newImg = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY_INV, 3, 5)
cv2.imshow(‘img’,img)
cv2.imshow(‘newImg’,newImg)
cv2.waitKey(60000)
運(yùn)行效果:
源圖:
下面是分別設(shè)置不同塊大小的結(jié)果圖,左圖塊大小為31,右圖為3:
可以看到blockSize小時(shí),輪廓識(shí)別效果明顯,而大時(shí),就是一個(gè)二值化圖像 。
十二、OpenCV的圖像修復(fù)方法OpenCV中的cv2.inpaint()函數(shù)使用插值方法修復(fù)圖像,調(diào)用語法如下:
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:修復(fù)算法標(biāo)記,其中INPAINT_NS表示基于Navier-Stokes方法,INPAINT_TELEA表示Alexandru Telea方法 。具體方法在此不展開介紹下面的代碼對一個(gè)包含亮色Logo的圖片進(jìn)行去Logo處理:
import cv2
def createImgMask(img):
# 創(chuàng)建img的掩碼
if img is None:return None
if len(img.shape)>=3:
img2gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
else:
img2gray = img
ret, mask = cv2.threshold(img2gray, 35, 255, cv2.THRESH_BINARY)
return mask
def delLogFromImg(img):
imgMask = createImgMask(img)
imgMask = cv2.inpaint(img, imgMask , 3, cv2.INPAINT_TELEA)
return imgMask
img1 = cv2.imread(r’F:templogo.jpg’)
img2 = cv2.imread(r’F:templogo.jpg’,cv2.IMREAD_GRAYSCALE)
newImg1 = delLogFromImg(img1)
newImg2 = delLogFromImg(img2)
cv2.imshow(‘img1’,img1)
cv2.imshow(‘newImg1’,newImg1)
cv2.imshow(‘img2’,img2)
cv2.imshow(‘newImg2’,newImg2)
cv2.waitKey(60000)
執(zhí)行截圖1:
小結(jié)本文詳細(xì)介紹了opencv-python的安裝、加載圖像文件、捕獲攝像頭、顯示圖像、鼠標(biāo)事件捕獲、鍵盤事件處理、幾何圖像繪制、顏色空間轉(zhuǎn)換、圖像閾值處理、圖像修復(fù)等基礎(chǔ)知識(shí),適合開始學(xué)習(xí)opencv-python的初學(xué)者 。
以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時(shí)就醫(yī)或請專業(yè)人士給予相關(guān)指導(dǎo)!
「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助:- ??剪映視頻右上角logo怎么去掉???
- 高清無線視頻傳輸系統(tǒng)操作 免費(fèi)無線網(wǎng)怎么連接
- ??抖音發(fā)視頻怎么添加話題標(biāo)簽???
- ??微信視頻號直播怎么連麥???
- ??剪映怎么剪掉視頻中的抖音號? 抖音視頻里的抖音號去掉的技巧??
- 視頻會(huì)議軟件使用方法 zoom視頻會(huì)議怎么用
- 芒果視頻app最新版下載方法 芒果tv安裝包怎么安裝到電視
- 3d視頻制作手機(jī)軟件推薦 3dmax軟件安裝教程
- ??微視怎么制作新春倒計(jì)時(shí)短視頻???
- 女子發(fā)惡搞視頻被判賠7萬!瀘州老窖稱焦點(diǎn)在于是否貶損品牌
