Так что это проблема, которая натолкнула меня на некоторое время. Это, вероятно, более простой, чем я думаю, но позволяет сказать, что у меня есть 2D массив, содержащий значения оттенков серого, и я уверен, преобразование в RGB:Выполнение ненулевых элементов в градациях серого, равное 1 в столбце «G» в массиве RGB в Python
import numpy as np
import matplotlib.pyplot as plt
grayscale = [[0, 0, 146, 150], [162, 0, 0, 60]]
gray = np.array(grayscale)
def to_rgb1(gray):
gray.resize((gray.shape[0], gray.shape[1], 1))
return np.repeat(gray.astype(np.uint8), 3, 2)
cmap = plt.get_cmap('jet')
rgba_img = cmap(gray)
rgb_img = np.delete(rgba_img, 3, 2)
print rgb_img
Выход этого кода:
[[[ 0. 0. 0.5 ]
[ 0. 0. 0.5 ]
[ 0.71790006 1. 0.24984187]
[ 0.76850095 1. 0.19924099]]
[[ 0.92030361 1. 0.04743833]
[ 0. 0. 0.5 ]
[ 0. 0. 0.5 ]
[ 0. 0.44117647 1. ]]]
Теперь давайте говорить Я не занимаюсь R
и B
колонками. Я знаю, как сделать этот ноль, но то, что я хочу сделать, это сделать какой-либо элемент, который nonzero
в оттенках серого массива равен 1
в G
колонки так массив выходной RGB
поэтому результат выглядит следующим образом:
[[[ 0. 0. 0.]
[ 0. 0. 0.]
[ 0. 1. 0.]
[ 0. 1. 0.]]
[[ 0. 1. 0.]
[ 0. 0. 0.]
[ 0. 0. 0.]
[ 0. 1. 0.]]]
Что было бы самым простым способом сделать это?