Не удается получить CV2.IMSHOW () для отображения так же, как CV2.IMWRITE () - PullRequest
0 голосов
/ 02 мая 2020

Сегодня это беспокоило меня, и решение записи на диск и последующего чтения просто не очень хорошее, учитывая, что я хотел бы увидеть, как все выглядит на экране итеративно, прежде чем я его сохраню.

приведенный ниже код иллюстрирует проблему наименьшим количеством кода

Я импортирую numpy и CV2 как обычно, без проблем. Затем создайте пустой массив numpy для цвета изображение таким образом (черный фон)

Xsize = Ysize = 100
img_np = np.zeros([Xsize,Ysize,3])

Следующие строки предназначены для окраски иллюстрации, выберите пиксели серого цвета в BGR

img_np[1][1] = [1, 1, 1]
img_np[1][3] = [10, 10, 10]
img_np[1][5] = [20, 20, 20]
img_np[1][7] = [30, 30, 30]
img_np[1][9] = [40, 40, 40]
img_np[1][11] = [100, 100, 100]
img_np[1][13] = [200, 200, 200]
img_np[1][15] = [240, 240, 240]

эта проблема возникает независимо от того, изменяю ли я размер или нет ..

img_cv = cv2.resize(img_np,(1000,1000), interpolation=cv2.INTER_NEAREST)
cv2.imshow('name',img_cv)
cv2.imwrite('crawltest.png', img_cv)

cv2.imshow выглядит так:

enter image description here

, а cv2.imwrite выглядит так:

enter image description here

для тех, кто, возможно, не может видеть, потому что они не позволяют моим изображениям появляться: все тестовые пиксели изображения imshow имеют белый цвет на черном поле, тестовые пиксели imwrite изображения являются правильными значениями серой шкалы

полностью меня Озадачен ... обратите внимание, что даже если я не изменяю размер, а просто использую массив numpy, он дает те же результаты [и я пишу с использованием ноутбуков Jupyter на случай, если это имеет какое-либо отношение к нему, хотя это не должно ]

есть идеи?

1 Ответ

1 голос
/ 02 мая 2020

Вам нужно передать dtype при инициализации данных

img_np = np.zeros([Xsize,Ysize,3], dtype=np.uint8)

Вывод:

enter image description here

...