Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用OpenCV转换颜色?_Python_Opencv - Fatal编程技术网

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()

这可能会有帮助。看看这里的“色调旋转”。。。谢谢你善意的回答!我选择它作为最佳答案。