猿问

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

我正在使用包含黑白数字图像的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 的三个通道。

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

绝地无双
浏览 237回答 2
2回答

蝴蝶刀刀

由于您想以与之前的白色/灰色相同的强度更改为红色,为什么不将两个空白图像与其一起堆叠。OpenCV 使用 BGR,所以我将使用 BGR 而不是 RGB,但如果需要 RGB,您可以更改它。import numpy as np#assuming img contains a grayscale image of size 28x28b = 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()您可以使用此代码并查看。它应该工作。

吃鸡游戏

您可以将当前的灰度输入用作红色通道,并将所有绿色和蓝色通道设置为零。您可以切换它们以使数字具有蓝色或绿色。import tensorflow as tfimport numpy as npimport matplotlib.pyplot as plt(x, _), (_, _) = tf.keras.datasets.mnist.load_data()x = x[0]f = np.concatenate([x[..., None],                    np.zeros((28, 28, 1)).astype(int),                    np.zeros((28, 28, 1)).astype(int)], axis=-1)plt.imshow(f)
随时随地看视频慕课网APP

相关分类

Python
我要回答