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()
来源于网络的图:(侵删!)
处理后的效果: