Python 如何使用OpenCV转换颜色?
我正在努力将红色转换成另一种颜色,蓝色、黄色、绿色等等 我已经实现了将红色转换为灰阶颜色,如下所示Python 如何使用OpenCV转换颜色?,python,opencv,Python,Opencv,我正在努力将红色转换成另一种颜色,蓝色、黄色、绿色等等 我已经实现了将红色转换为灰阶颜色,如下所示 img2=cv2.imread('output2.jpg') img_hsv=cv2.cvt颜色(img2,cv2.COLOR_BGR2HSV) #下部遮罩(0-10) 下_red=np.数组([0,50,50]) 上\u red=np.数组([10255255]) mask0=cv2.inRange(img\U hsv,下部红色,上部红色) #上面罩(170-180) 下_red=np.数组([
img2=cv2.imread('output2.jpg')
img_hsv=cv2.cvt颜色(img2,cv2.COLOR_BGR2HSV)
#下部遮罩(0-10)
下_red=np.数组([0,50,50])
上\u red=np.数组([10255255])
mask0=cv2.inRange(img\U hsv,下部红色,上部红色)
#上面罩(170-180)
下_red=np.数组([170,50,50])
上部红色=np.数组([180255255])
mask1=cv2.inRange(img\U hsv,下部红色,上部红色)
#加入我的面具
mask=mask0+mask1
输出\u img=img2.copy()
输出\u img[np.式中(掩码!=0)]=125
但我真正想要的是把一种颜色变成另一种颜色,而不是灰度。我应该如何更改代码或任何良好的参考?谢谢。您将125值用于遮罩中的所有点,包括:
output_img[np.where(mask!=0)] = 125
如果要更改为彩色像素,只需为该像素指定颜色数组,例如:
output_img[np.where(mask!=0)] = [125, 50, 50] #RGB array
完整代码:
import numpy as np
import cv2
import matplotlib.pyplot as plt
img2 = cv2.imread('sample.png')
img_hsv=cv2.cvtColor(img2, cv2.COLOR_BGR2HSV)
# lower mask (0-10)
lower_red = np.array([50,50,0])
upper_red = np.array([255,255,50])
mask0 = cv2.inRange(img_hsv, lower_red, upper_red)
# upper mask (170-180)
lower_red = np.array([50,50,50])
upper_red = np.array([255,255,180])
mask1 = cv2.inRange(img_hsv, lower_red, upper_red)
# join my masks
mask = mask0+mask1
output_img = img2.copy()
output_img[np.where(mask!=0)] = [125, 50, 50]
plt.imshow(img2)
plt.title('Original')
plt.show()
plt.imshow(output_img)
plt.title('After')
plt.show()
这可能会有帮助。看看这里的“色调旋转”。。。谢谢你善意的回答!我选择它作为最佳答案。