Изображение на локальном компьютере отображается правильно в средстве просмотра изображений, но не читается должным образом при использовании cv2.imread ()? - PullRequest
1 голос
/ 03 июля 2019

Я отправляю изображение base64 на сервер flask. Затем изображение base64 декодируется и сохраняется на моем локальном компьютере с помощью обработки файлов. После сохранения файла я использую opencv 2.0 function imread для чтения изображения и imshow для его отображения. Но он отображает полностью черное изображение (с нулевым массивом, равным нулю). Изображение отображается правильно с помощью средства просмотра изображений. Какие могут быть возможные решения?

Я пытался заменить OpenCV на matplotlib, но он тоже не работает. Даже добавил imread_unchanged, чтобы возвращаемое изображение не обрезалось.

image_64_encoded="contains base64 encoded image"
fh = open("imageToSave.png", "w")
fh.write(image_64_encoded.decode('base64'))
fh.close()
script_dir = os.path.dirname(__file__) 
rel_path = "../shape-detection/imageToSave.png"
abs_file_path = os.path.join(script_dir, rel_path)
print("\n",abs_file_path,"\n\n")
image = cv2.imread(abs_file_path)
print(image);
cv2.imshow('image',image)

Ожидаемый результат должен совпадать с отображением в средстве просмотра изображений. Но он отображает чисто черное изображение.

Фактическое изображение из средства просмотра изображений

Actual image from image viewer

изображение, отображаемое cv2.imshow ()

image displayed by cv2.imshow()

1 Ответ

0 голосов
/ 03 июля 2019

Вся информация находится в альфа-канале, а не в каналах RGB.

Вам нужно будет использовать:

image = cv2.imread(path,cv2.IMREAD_UNCHANGED)

и посмотрите в 4-м канале (альфа):

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