亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

簡述

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

軟件環(huán)境:

python3.5
opencv2
windows 10

圖像載入

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

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)

原圖如下


(圖片源于網絡,已經馬賽克處理,如有侵權,私信立即刪除)

獲取背景區(qū)域

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

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如下圖

 

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

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

經過腐蝕和膨脹操作后如下圖

 

處理后圖像單獨白色點消失。

替換背景色

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

#遍歷替換
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)

最終結果如下


(圖片源于網絡,已經馬賽克處理,如有侵權,私信立即刪除)

總結

最開始想直接通過遍歷全圖進行替換背景色,但是圖像中難免有些像素點和背景色一樣,造成了干擾,導致最后結果不盡人意,所以想通過這種方法進行處理。顯然最后有明顯的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)

#轉換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()

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • python圖片格式轉換腳本

    python圖片格式轉換腳本

    大家好,本篇文章主要講的是python圖片格式轉換腳本,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • django 信號調度機制詳解

    django 信號調度機制詳解

    這篇文章主要介紹了django 信號調度機制詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • 用Flask實現(xiàn)token登錄校驗的解決方案

    用Flask實現(xiàn)token登錄校驗的解決方案

    網站、小程序、APP 是否已經登錄所代表的狀態(tài),代表一個概念是登錄態(tài), 我們常用的登錄態(tài)驗證方式有cookie,session,token,token提供了另外一種不需要緩存賬戶和密碼的登錄狀態(tài)驗證方式,本文給大家介紹了用Flask實現(xiàn)token登錄校驗的解決方案,需要的朋友可以參考下
    2024-03-03
  • python pygame實現(xiàn)滾動橫版射擊游戲城市之戰(zhàn)

    python pygame實現(xiàn)滾動橫版射擊游戲城市之戰(zhàn)

    這篇文章主要為大家詳細介紹了python pygame實現(xiàn)滾動橫版射擊游戲城市之戰(zhàn),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • python繪制y關于x的線性回歸線性方程圖像實例

    python繪制y關于x的線性回歸線性方程圖像實例

    這篇文章主要為大家介紹了python繪制y關于x的線性回歸線性方程圖像實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • python如何查找圖片按鈕的坐標位置

    python如何查找圖片按鈕的坐標位置

    這篇文章主要介紹了python如何查找圖片按鈕的坐標位置,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Pycharm主題切換(禁用)導致UI界面顯示異常的解決方案

    Pycharm主題切換(禁用)導致UI界面顯示異常的解決方案

    這篇文章主要介紹了Pycharm主題切換(禁用)導致UI界面顯示異常的原因分析和解決方案,文中通過圖文結合的方式給大家介紹的非常詳細,需要的朋友可以參考下
    2024-06-06
  • python把1變成01的步驟總結

    python把1變成01的步驟總結

    在本文里我們給學習python的朋友們整理了關于python把1變成01的步驟總結內容,有需要的朋友們學習下。
    2019-02-02
  • pandas的apply函數(shù)用法詳解

    pandas的apply函數(shù)用法詳解

    本文主要介紹了pandas的apply函數(shù)用法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01
  • Python 專題三 字符串的基礎知識

    Python 專題三 字符串的基礎知識

    在Python中最重要的數(shù)據類型包括字符串、列表、元組和字典等。本篇文章主要講述Python的字符串基礎知識。下面跟著小編一起來看下吧
    2017-03-03

最新評論