кодирование изображений opencv возвращает массив вместо буфера - PullRequest
0 голосов
/ 23 ноября 2018

У меня проблема с преобразованием закодированного изображения в строку.Я кодирую, как показано ниже:

image = cv2.imread(imagePath)
_, buffer = cv2.imencode('.png', image)

Когда я пытаюсь позвонить, buffer.toString(), я получаю следующую ошибку:

AttributeError: 'numpy.ndarray' object has no attribute 'toString'

Есть много вопросов о стека переполнения, связанных с той же функциональностьючто я делаю (кодирование с opencv).Ниже приведены несколько ответов с противоречивыми ответами.

  1. https://stackoverflow.com/a/25592959/7621143

В этом ответе подразумевается, что imencode возвращает кортеж с 2 элементами:

>>> img_str = cv2.imencode('.jpg', img)[1].tostring()
>>> type(img_str)
 'str'
https://stackoverflow.com/a/17970817/7621143

Другой ответ на тот же вопрос подразумевает, что результатом является одно значение.

В любом случае, в моем случае возвращаемое значение является кортежем с 2элементы, где вторым является ndarray, у которого нет метода toString().

FWIW,

$ pip show opencv-python
Name: opencv-python
Version: 3.4.3.18
$ pip show numpy
Name: numpy
Version: 1.15.4

Документация OpenCV для imencode говоритвозвращаемое значение - кортеж с 2 элементами, а 2 - буфер.

Python: cv2.imencode(ext, img[, params]) → retval, buf

Любые предложения приветствуются, чтобы решить эту проблему.

1 Ответ

0 голосов
/ 23 ноября 2018

Ошибка ясно говорит:

AttributeError: у объекта 'numpy.ndarray' нет атрибута 'toString'

, что означает, что вы неправильно написали метод,Замените toString на tostring, чтобы получить желаемые результаты.

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