У меня проблема с преобразованием закодированного изображения в строку.Я кодирую, как показано ниже:
image = cv2.imread(imagePath)
_, buffer = cv2.imencode('.png', image)
Когда я пытаюсь позвонить, buffer.toString()
, я получаю следующую ошибку:
AttributeError: 'numpy.ndarray' object has no attribute 'toString'
Есть много вопросов о стека переполнения, связанных с той же функциональностьючто я делаю (кодирование с opencv).Ниже приведены несколько ответов с противоречивыми ответами.
- 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
Любые предложения приветствуются, чтобы решить эту проблему.