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

歡迎訪問 生活随笔!

生活随笔

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

python

python opencv给证件照换底色

發布時間:2024/9/30 python 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python opencv给证件照换底色 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

昨天朋友忙要把白色背景的證件照換為紅色的,比較急用,本人也不太會用PS,網上的那些轉換小工具都是要收費的,就想著自己搞一搞,原理很簡單,白色背景的像素值為[255,255,255],用這個信息生成mask,再將生成的Mask對應回原圖像將背景區域換為紅色的像素值[256,0,0]即可實現。

read image

def read_source_image(image_path):img = cv2.imread(image_path)return img

resize

def resize(img,height,whight):return cv2.resize(img,(whight,height))

生成mask

def generator_mask(img):""":param img: source image:return: mask"""mask = np.zeros_like(img)row,col,channels = img.shapefor i in range(row):for j in range(col):if sum(img[i, j]) == 255 * 3:mask[i, j] = (255, 255, 255)else:mask[i, j] = [0, 0, 0]# Gaussian Blurmask = cv2.GaussianBlur(mask, (7, 7), 0)return mask

白色轉紅色

def white_to_red(img,mask):""":param img: source image:param mask: mask image:return: red background image"""img_copy = np.zeros_like(img)row, col, channels = img.shapefor i in range(row):for j in range(col):if sum(mask[i,j]) != 0:img_copy[i,j] = [0,0,255]else:img_copy[i,j] = img[i,j]return img_copy

白色轉藍色

def white_to_blue(img,mask):""":param img: source image:param mask: mask image:return: Blue background image"""img_copy = np.zeros_like(img)row, col, channels = img.shapefor i in range(row):for j in range(col):if sum(mask[i,j]) != 0:img_copy[i,j] = [255,0,0]else:img_copy[i,j] = img[i,j]return img_copy

我自己轉出來的結果還可以,但是在人的邊緣位置上還是能夠看到有瑕疵,所以在mask生成里面做了高斯模糊,實驗驗證是有用的,經過高斯模糊之后生成的圖像質量改了很多,但在真用的時候還是會有一些問題,比如背景并不是純白色的時候,分割就會有問題,后面有時間的話可以考慮用分割的方法來繼續完善這個小工具。

總結

以上是生活随笔為你收集整理的python opencv给证件照换底色的全部內容,希望文章能夠幫你解決所遇到的問題。

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