照片就不放了,直接动手,看看怎么换照片底色吧。
但是不得不说,PS玩得好替换效果肯定比这好。
参考博文:https://mp.weixin.qq.com/s/Cgg8PlIzx-ZXU_sEeGVKsw
第一步 装包
避坑:直接装cv2会报错,所以promt里装了另外一个包,pip install opencv-python。这个包已经包含了cv2。
import cv2
import numpy as np
第二步 读取展示图片
避坑:imshow和waitKey命令要一起运行,否则无法显示图片。另外waitKey()的K大写。
# 读取照片
img = cv2.imread(r'C:/Users/lee/Desktop/1.jpg')
# 展示照片
cv2.imshow('img',img)
# 窗口等待的命令,0表示无限等待
cv2.waitKey(0)
第三步 灰度化与二值化
# 图片转换为灰度化图
hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
# 图片的二值化处理
lower_blue = np.array([90,70,70])
upper_blue = np.array([110,255,255])
mask = cv2.inRange(hsv, lower_blue, upper_blue)
第四步 噪点腐蚀/膨胀(二选一,看效果)
#腐蚀
erode=cv2.erode(mask,None,iterations=1)
cv2.imshow('erode',erode)
#膨胀
dilate=cv2.dilate(erode,None,iterations=1)
cv2.imshow('dilate',dilate)
第五步 换底色
原理:将二值化的白色转为想要的背景色,将其他像素点颜色还原
#遍历每个像素点,进行颜色的替换
rows=255
cols=187
for i in range(rows):
for j in range(cols):
if erode[i,j]==255: # 像素点为255表示的是白色,我们就是要将白色处的像素点,替换为红色
img[i,j]=(0,0,255) # 此处替换颜色,为BGR通道,不是RGB通道
cv2.imshow('res',img)
# 窗口等待的命令,0表示无限等待
cv2.waitKey(0)