Почему на изображениях matplotlib из массива np преобладает красный цвет? - PullRequest
0 голосов
/ 09 февраля 2019

Я принимаю данные изображения из массивов np и добавляю два дополнительных измерения, чтобы я мог использовать конвейер обработки изображений, который требует данные RGB, и на изображениях преобладает красный цвет.Вот что я делаю, начиная с фрейма данных путей к файлам:

#get filename
f = files.tail(-1)['name'].values[0]
img = plt.imread(f)
#check if it's an array in 3 dimensions
if len(img.shape) == 2:
    print('not RGB')
    #image sizes vary so get shape
    s = img.shape[0:2]
    dim2 = np.zeros((s))
    dim3 = np.zeros((s))
    pix = np.stack((img, dim2,dim3), axis=2)
    pix = np.true_divide(pix, 255)

    plt.imshow(pix)

И пример результата: red images (should be black/white)

Благодарим Вас за помощь!

1 Ответ

0 голосов
/ 09 февраля 2019

Следующий код объясняет вашу проблему:

import numpy as np
import matplotlib.pyplot as plt

A = np.random.rand(10, 10)

B = np.zeros((*A.shape, 3))
B[:,:,0] = A

C = A.reshape((*A.shape, 1)).repeat(3, 2)

fig, axs = plt.subplots(ncols=3)

mats = [A, B, C]

for ax, mat in zip(axs, mats):
    ax.imshow(mat)

A - ваше изображение в градациях серого.B - это то, что вы сделали: значения A назначены красному каналу изображения RGB.C, скорее всего, то, что вам нужно: поскольку вам нужно изображение RGB, вы просто копируете значения A два раза.Результаты:

enter image description here

Слева направо: A, B, C

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...