1 demo展示
先贴上完整代码,
import cv2
image = cv2.imread('test.jpg') # 根据路径读取一张图片
cv2.imshow("BGR", image) # 显示图片
# 转化图片到HSV色彩空间,注意opencv读取RGB图片的方式是BGR
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
# 改变HSV值使背景为蓝色
for x in range(0, len(hsv)):
for y in range(0, len(hsv[0])):
# 因为脸部有一部分跟背景颜色相近,所以加了如下判断排除脸部
face = False
if x>=170 and x<=300 and y>=170 and y<=430:
face = True
# 选择原本浅绿色背景(H值为75-90左右,这可以通过print大致看出)
if hsv[x, y][0]>=75 and hsv[x, y][0]<=90 and not face:
# 网上可查蓝色大概对应的H,S,V值
hsv[x, y][0] = 110 # x,y是像素点坐标,注意实践中这里x,y是反的0代表H通道
hsv[x, y][1] = 100
# 展示改变效果需要换回RGB图片
image_new = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)
cv2.imshow("image_new", image_new) # 显示图片
cv2.imwrite("image_new.jpg", image_new)
cv2.waitKey(0)
原始图像如下:
改变HSV值后的图像如下(不加脸部判断):
加了脸部判断后如下: