операнды не могут быть переданы вместе с фигурами (1024,1280,4) (3,) (1024,1280,4) при чтении изображения png из файла - PullRequest
0 голосов
/ 05 февраля 2020

Мне нужно прочитать изображение png из файла, отправленного по запросу http, и преобразовать его в массив numpy, я использую код ниже, но код на этом изображении не работает с ошибкой "операнды не могут быть переданы вместе с фигурами (1024,1280,4) (3,) (1024,1280,4) "

img = cv2.imdecode(numpy.frombuffer(request.files['file'].read(), dtype='uint8'), cv2.IMREAD_UNCHANGED)

opencv версия: 3.4.2, python: 3.7.6

изображение расширение png enter image description here

Ответы [ 2 ]

1 голос
/ 05 февраля 2020

Работает в соответствии со спецификацией вещания. Обратитесь к документации numpy для получения полной информации, но она работает следующим образом:

1) Проверьте, имеют ли оба массива одинаковое количество измерений. Если они этого не делают, увеличьте его на 1 с слева (6-> 1,6).

2) Передайте измерения от 1 до измерения в другом массиве (1, 3 * 2,1-> 2,3)

3) Если после обоих этих шагов формы все еще различны, выведите исключение.

В вашем случае ваше дополнительное измерение находится на правильно, так что следуя правилам, это не сработает. Вы должны добавить дополнительное 1 измерение самостоятельно. Оба numpy.reshape или numpy.expand_dims могут это сделать.

0 голосов
/ 05 февраля 2020
import numpy as np
from urllib.request import urlopen
from PIL import Image

url = 'https://i.stack.imgur.com/DVBfW.png'
img = Image.open(urlopen(url))
image_array = np.array(img)

print(type(image_array))
print(image_array.shape)

Выход:

<class 'numpy.ndarray'>
(2362, 2952, 4)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...