Почему OpenCV не показывает изображение, хранящееся в массиве?(Python) - PullRequest
0 голосов
/ 30 января 2019

Я читаю изображение с помощью cv2.imread в переменную и использую cv2.imshow, чтобы отобразить его просто отлично.Я беру ту же самую переменную и передаю ее в массив массивов той же формы, что и изображение, и пытаюсь отобразить его.Та же форма, тот же тип данных и те же значения в массиве, и я получаю пустой белый квадрат из cv2.imshow.Почему не изображение?

Если я возьму массив numpy и сохраню его с помощью cv2.imwrite, он прекрасно сохранит картинку.Любая помощь приветствуется, это сводит меня с ума.

images = np.zeros(shape=(1,30,30,3))

i = 1
a = cv2.resize(cv2.imread('/media/images/'+str(i)+'.png', 1), (30,30))

b = images[0] = a

print(b.shape, images[0].shape)
print(type(b), type(images[0]))

# Displays image
cv2.imshow('img', b)
cv2.waitKey(0)
cv2.destroyAllWindows()

# Displays blank, white image
cv2.imshow('img', images[0])
cv2.waitKey(0)
cv2.destroyAllWindows()

1 Ответ

0 голосов
/ 30 января 2019

b и images не имеют одинаковый dtype:

>>> images[0].dtype
dtype('float64')
>>> b.dtype
dtype('uint8')

Так что cv2 не знает, как раскрасить images.

Так что если вы первыйстрока:

images = np.zeros(shape=(1,30,30,3), dtype=np.uint8)

это должно решить проблему.

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