opencv入门之RGB转HSV并更换背景

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值后的图像如下(不加脸部判断):
在这里插入图片描述
加了脸部判断后如下:
在这里插入图片描述

原文地址:https://www.cnblogs.com/hzcya1995/p/13281712.html