使用 OpenCV 更改像素的颜色

Change color of a pixel with OpenCV

假设我有这朵玫瑰(不要在意背景,只有白叶很重要)。

我转成灰度图: grayscaled=cv2.imread('white_rose.png',cv2.IMREAD_GRAYSCALE)

在红色 (R=255) 与白色像素具有相同对比度的情况下,如何将每个白色像素更改为红色像素?意思是我想看到红色的白叶,但每个像素的 L 值与 grayscaled ?

中的每个像素值相同

你需要循环你的灰色图像并自己创建一个新的彩色图像。

对于每个像素,您可以将彩色图像的 R 值替换为 255 和相对灰度值的除法余数:

import cv2
import numpy as np

img = cv2.imread('5585T.jpg')
print type(img)
img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
new=[[[0,0,255%j] for j in i] for i in img_gray]
dt = np.dtype('f8')
new=np.array(new,dtype=dt)

cv2.imwrite('img.jpg',new)

new=[[[255%j,255%j,j] for j in i] for i in img_gray] :