python照片更换底图
将rgb转成hsv,进行处理
图片来自网络,侵删。
# -*- coding:utf-8 -*-
#yys
import cv2
import numpy as np
print(cv2.__version__)#3.4.4
img=cv2.imread("1.jpg",1)
#H S V (Hue, Saturation, Value)
#Hue 色调,Saturation饱和,Value:亮度值
img_hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
img_gray=cv2.cvtColor(img_hsv,cv2.COLOR_BGR2GRAY)
rows,cols=img_gray.shape
lower_value=np.array( [30,150,150] )
upper_value=np.array( [120,230,255] )
#实现二值化的功能
mask=cv2.inRange(img_hsv,lower_value,upper_value)
mask2rgb=cv2.cvtColor(mask,cv2.COLOR_GRAY2BGR)
kernel = np.ones((3,3), np.uint8)
#腐蚀
mask=cv2.erode(mask, kernel=kernel,iterations=1)
# 膨胀
mask=cv2.dilate(mask, kernel=kernel ,iterations=3)
img1=img.copy()
for i in range(rows):
for j in range(cols):
if mask[i,j]!=0:
img1[i,j] =(255,0,0)
cv2.namedWindow("img", cv2.WINDOW_KEEPRATIO)
hstack=np.hstack((mask2rgb,img,img1))
cv2.imshow("img",hstack)
save_img=cv2.resize(hstack,(int(hstack.shape[1]*0.25),int(hstack.shape[0]*0.25)))
cv2.imwrite("img.jpg",save_img)
cv2.namedWindow("img",)
cv2.waitKey(0)
cv2.destroyWindow("img")
# cv2.destroyAllWindows()
来源于网络的图:(侵删!)

处理后的效果:


