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

基于OpenCV python3實(shí)現(xiàn)證件照換背景的方法

 更新時(shí)間:2019年03月22日 09:52:48   作者:ahaofan  
這篇文章主要介紹了基于OpenCV python3實(shí)現(xiàn)證件照換背景的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

簡述

生活中經(jīng)常要用到各種要求的證件照電子版,紅底,藍(lán)底,白底等,大部分情況我們只有其中一種,所以通過技術(shù)手段進(jìn)行合成,用ps處理證件照,由于技術(shù)不到位,有瑕疵,所以想用python&openCV通過代碼的方式實(shí)現(xiàn)背景顏色替換,加強(qiáng)一下對于openCV的學(xué)習(xí),鍛煉一下編碼水平。

軟件環(huán)境:

python3.5
opencv2
windows 10

圖像載入

導(dǎo)入opencv庫,使用imread函數(shù)讀取圖片

import cv2
import numpy as np

img=cv2.imread('zjz.jpg')

由于證件照太大,不方便顯示,故進(jìn)行縮放

#縮放
rows,cols,channels = img.shape
img=cv2.resize(img,None,fx=0.5,fy=0.5)
rows,cols,channels = img.shape
cv2.imshow('img',img)

原圖如下


(圖片源于網(wǎng)絡(luò),已經(jīng)馬賽克處理,如有侵權(quán),私信立即刪除)

獲取背景區(qū)域

首先將讀取的圖像默認(rèn)BGR格式轉(zhuǎn)換為HSV格式,然后通過inRange函數(shù)獲取背景的mask。
HSV顏色范圍參數(shù)可調(diào)節(jié)根據(jù)這篇文章

hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
lower_blue=np.array([78,43,46])
upper_blue=np.array([110,255,255])
mask = cv2.inRange(hsv, lower_blue, upper_blue)
cv2.imshow('Mask', mask)

獲得的mask如下圖

 

如圖所示藍(lán)色的背景在圖中用白色表示,白色區(qū)域就是要替換的部分,但是黑色區(qū)域內(nèi)有白點(diǎn)干擾,所以進(jìn)一步優(yōu)化。
腐蝕和膨脹

#腐蝕膨脹
erode=cv2.erode(mask,None,iterations=1)
cv2.imshow('erode',erode)
dilate=cv2.dilate(erode,None,iterations=1)
cv2.imshow('dilate',dilate)

經(jīng)過腐蝕和膨脹操作后如下圖

 

處理后圖像單獨(dú)白色點(diǎn)消失。

替換背景色

遍歷全部像素點(diǎn),如果該顏色為dilate里面為白色(255)則說明該點(diǎn)所在背景區(qū)域,于是在原圖img中進(jìn)行顏色替換。

#遍歷替換
for i in range(rows):
 for j in range(cols):
  if dilate[i,j]==255:
   img[i,j]=(0,0,255)#此處替換顏色,為BGR通道
cv2.imshow('res',img)

最終結(jié)果如下


(圖片源于網(wǎng)絡(luò),已經(jīng)馬賽克處理,如有侵權(quán),私信立即刪除)

總結(jié)

最開始想直接通過遍歷全圖進(jìn)行替換背景色,但是圖像中難免有些像素點(diǎn)和背景色一樣,造成了干擾,導(dǎo)致最后結(jié)果不盡人意,所以想通過這種方法進(jìn)行處理。顯然最后有明顯的ps痕跡。

最后貼上完整代碼,不足之處歡迎各位指正!

import cv2
import numpy as np

img=cv2.imread('zjz.jpg')
#縮放
rows,cols,channels = img.shape
img=cv2.resize(img,None,fx=0.5,fy=0.5)
rows,cols,channels = img.shape
cv2.imshow('img',img)

#轉(zhuǎn)換hsv
hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
lower_blue=np.array([78,43,46])
upper_blue=np.array([110,255,255])
mask = cv2.inRange(hsv, lower_blue, upper_blue)
cv2.imshow('Mask', mask)

#腐蝕膨脹
erode=cv2.erode(mask,None,iterations=1)
cv2.imshow('erode',erode)
dilate=cv2.dilate(erode,None,iterations=1)
cv2.imshow('dilate',dilate)

#遍歷替換
for i in range(rows):
 for j in range(cols):
  if dilate[i,j]==255:
   img[i,j]=(0,0,255)#此處替換顏色,為BGR通道
cv2.imshow('res',img)

cv2.waitKey(0)
cv2.destroyAllWindows()

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python?reflect單例模式反射各個(gè)函數(shù)

    Python?reflect單例模式反射各個(gè)函數(shù)

    這篇文章主要介紹了Python?reflect單例模式反射各個(gè)函數(shù),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值需要的小伙伴可以參考一下
    2022-06-06
  • python實(shí)現(xiàn)煙花小程序

    python實(shí)現(xiàn)煙花小程序

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)煙花小程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • Python基礎(chǔ)之Spyder的使用

    Python基礎(chǔ)之Spyder的使用

    Spyder是一個(gè)用于科學(xué)計(jì)算的使用Python編程語言的集成開發(fā)環(huán)境(IDE),它結(jié)合了綜合開發(fā)工具的高級編輯、分析、調(diào)試等功能,需要的朋友可以參考下
    2023-05-05
  • Python數(shù)據(jù)可視化之環(huán)形圖

    Python數(shù)據(jù)可視化之環(huán)形圖

    這篇文章主要介紹了Python數(shù)據(jù)可視化之環(huán)形圖,主要使用兩種不同的方式來可視化環(huán)形圖,并均給出了完整的代碼示例。需要的朋友可以參考一下,希望對你的工作和學(xué)習(xí)有所幫助
    2022-01-01
  • Python解決爬蟲程序卡死問題

    Python解決爬蟲程序卡死問題

    這篇文章主要介紹了Python解決爬蟲程序卡死問題,文章圍繞主題展開詳細(xì)內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-05-05
  • 詳解用Python為直方圖繪制擬合曲線的兩種方法

    詳解用Python為直方圖繪制擬合曲線的兩種方法

    這篇文章主要介紹了詳解用Python為直方圖繪制擬合曲線的兩種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • python zip()函數(shù)的使用示例

    python zip()函數(shù)的使用示例

    這篇文章主要介紹了python zip()的使用示例,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-09-09
  • Python實(shí)現(xiàn)滑雪小游戲

    Python實(shí)現(xiàn)滑雪小游戲

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)滑雪小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • django 連接數(shù)據(jù)庫 sqlite的例子

    django 連接數(shù)據(jù)庫 sqlite的例子

    今天小編就為大家分享一篇django 連接數(shù)據(jù)庫 sqlite的例子,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • PyTorch中的torch.cat函數(shù)基本用法詳解

    PyTorch中的torch.cat函數(shù)基本用法詳解

    在PyTorch中,torch.cat是一個(gè)非常實(shí)用的函數(shù),用于將多個(gè)張量(Tensor)沿指定維度連接起來,本文將詳細(xì)介紹torch.cat函數(shù)的用法,并通過一些示例來說明其應(yīng)用,感興趣的朋友跟隨小編一起看看吧
    2024-08-08

最新評論

泰来县| 凤翔县| 沙洋县| 桂林市| 二连浩特市| 望城县| 黄骅市| 益阳市| 仁化县| 小金县| 岱山县| 辰溪县| 集安市| 麻栗坡县| 宁乡县| 湘乡市| 青岛市| 延庆县| 长沙市| 廊坊市| 镇宁| 上栗县| 宁南县| 伊川县| 清苑县| 彭州市| 吉水县| 诸暨市| 宁强县| 高碑店市| 德兴市| 通河县| 朝阳县| 开远市| 呼图壁县| 玛曲县| 龙南县| 孟津县| 新乡县| 安泽县| 塔城市|