日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python怎么改成白底_教你用OpenCV 和 Python给证件照换底色(蓝底 -红底-白底)...

發布時間:2023/12/15 python 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python怎么改成白底_教你用OpenCV 和 Python给证件照换底色(蓝底 -红底-白底)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?在我們的生活中常常要用到各種底色要求的證件電子照,紅底、藍底、或者白底,而假如你手上只有一種底色的證件照,你又不想再去拍又不會PS怎么辦?今天教你們用OpenCV和Python給你的證件照換底色。Python3

numpy函數庫

OpenCV庫

Windows10 + Anaconda+Pycharm

1.讀取要換底色的圖片

導入OpenCV庫,使用imread函數讀取圖片。

import cv2

import numpy as np

# 讀取照片并顯示

image=cv2.imread('yang.jpg')

cv2.imshow('image',image)

2.對圖片進行縮放

證件照原圖太大,不易顯示,cv2.resize函數進行縮放處理。

# 圖像縮放并顯示

img = cv2.resize(image,None,fx=0.5,fy=0.5)

rows,cols,channels = img.shape

print(rows,cols,channels)

cv2.imshow('img',img)

3.將圖片轉換為灰度圖像

cv2.cvtColor函數將讀取的圖像默認是BGR格式轉換為HSV格式,將彩色圖片轉換為hsv灰度圖片,之后才能進行腐蝕和膨脹操作。

# 圖片轉換為灰度圖并顯示

hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)

cv2.imshow('hsv',hsv)

4.對圖片進行二值化處理

通過cv2.inRange函數對圖片進行二值化操作,獲取背景的mask,二值化處理視為了將灰度圖片轉換為黑白圖片,如下圖將紅色的背景用白色表示,白色區域就是我們后面遍歷像素點替換的條件,就是將白色的區域替換為藍色。

cv2.inRange(hsv, lower_red, upper_red):在lower_red和upper_red兩個閾值內的像素值設置為白色(255),而不在閾值區間內的像素值設置為黑色(0)。

# 圖片的二值化處理

#紅底變藍底

#將在兩個閾值內的像素值設置為白色(255),而不在閾值區間內的像素值設置為黑色(0)

lower_red= np.array([0,135,135])

upper_red = np.array([180,245,230])

mask = cv2.inRange(hsv, lower_red, upper_red)

# 顯示圖像

cv2.imshow('mask',mask)

# #藍底變紅底

# lower_blue = np.array([90,70,70])

# upper_blue = np.array([110,255,255])

# mask = cv2.inRange(hsv, lower_blue, upper_blue)

# 顯示圖像

# cv2.imshow('mask',mask)

5.對圖片進行腐蝕和膨脹

在進行二值化操作之后,我們可以看到黑色區域有一些噪聲,嘴的部分是白的,還有少數白點,就cv2.erode或者cv2.dilate函數對圖片再進行腐蝕和膨脹操作,均可以有效消除噪聲。

#腐蝕膨脹

erode=cv2.erode(mask,None,iterations=1)

cv2.imshow('erode',erode)

dilate=cv2.dilate(erode,None,iterations=1)

cv2.imshow('dilate',dilate)

6.遍歷像素點替換背景顏色

對上述進行了腐蝕或者膨脹操作的圖片進行像素點遍歷,將白色區域的像素點的位置,也就是原圖的背景部分的像素的對應的位置,替換成你想要替換的底色即可。

dilate[i,j]==255:像素點為255表示的是白色,我們就要將白色處的像素點,替換為你想要的照片底色。

img[i,j]=(0,0,255): 此處替換顏色,為BGR通道,不是RGB通道,若是想要將紅底變成藍底img[i,j]=(255,0,0),若是想將藍底變為紅底則img[i,j]=(0,0,255),若是想變白底img[i,j]=(255,255,255)

# 遍歷每個像素點,進行顏色的替換

for i in range(rows):

for j in range(cols):

if dilate[i,j]==255: #像素點255表示白色

img[i,j]=(255,0,0) # 此處替換顏色,為BGR通道,不是RGB通道

cv2.imshow('res',img)

# 窗口等待的命令,0表示無限等待

cv2.waitKey(0)

紅底變藍底

藍底變紅底

變白底

完整代碼,點擊獲取下載:http://mp.weixin.qq.com/s?__biz=MzI4Mzc1OTA5OA==&mid=100002242&idx=1&sn=4c629be01fd8ded9b843324d57daf83c&chksm=6b8491575cf3184114f8a3438f71c862e10ee592789779ca4cf38ed9f1d6ebfb01b449c0449d#rd?mp.weixin.qq.com

更多有關python、深度學習和計算機編程和電腦知識的精彩內容,可以關注微信公眾號:碼農的后花園

總結

以上是生活随笔為你收集整理的python怎么改成白底_教你用OpenCV 和 Python给证件照换底色(蓝底 -红底-白底)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。