python - 将图像中的白色像素更改为不同的颜色

标签 python image opencv image-processing

我正在使用 MNIST包含数字黑白图像的数据集。我正在尝试将数字(白色部分)从白色/灰色更改为与白色相同程度的不同颜色,比如红色。我使用 opencv 将它们转换为 rgb 图像而不是灰度图像,并将它们打包成这样的数组:

cImgsTrain = np.asarray([cv2.cvtColor(img.reshape(28,28),cv2.COLOR_GRAY2RGB) for img in x_train])

cImgsTrain.shape

输出

(60000, 28, 28, 3)

60,000 张图像,每张 28x28 和 rgb 的三个 channel 。

我如何更改那里的第一张图片,cImgsTrain[0],从这个白色版本变成红色版本,让更白的像素变成更深的红色,让更灰的像素更亮阴影?有什么功能可以帮助解决这个问题吗?

enter image description here

最佳答案

既然你想以与之前的白色/灰色相同的强度变为红色,为什么不将两个空白图像与其一起堆叠。

OpenCV 使用 BGR,所以我将使用 BGR 而不是 RGB,但如果需要 RGB,您可以更改它。

import numpy as np

#assuming img contains a grayscale image of size 28x28
b = np.zeros((28, 28), dtype=np.uint8)
g = np.zeros((28, 28), dtype=np.uint8)
res = cv2.merge((b, g, img))
cv2.imshow('Result', res)
cv2.waitKey(0)
cv2.destroyAllWindows()

你可以使用这段代码看看。它应该有效。

关于python - 将图像中的白色像素更改为不同的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62722767/

相关文章:

html - Firefox 和 IE 以精确的像素换行

python - 使用OpenCV和python在较大图像中裁剪灰度图像

python - 如何从目录中读取数百个 csv 文件并对每个文件中的特定列求和?

Python3 : print(somestring, end ='\r' , flush=True) 什么都不显示

image - 负互相关显示高相似度还是低相似度?

JavaScript 来控制图像动画?

python - 如何使用正则表达式在字符串中查找具有特定规则的子字符串?

python - 包含任意用户定义的函数的最佳方式?

android - 将 JSON 格式的 OpenCV 图像从 Python 发送到 Android

opencv - 如何检测大小可变的部分矩形