opencv图像编码返回数组,而不是缓冲区

时间:2018-11-23 06:34:55

标签: python numpy opencv

我在将编码的图像转换为字符串时遇到问题。我编码如下:

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

当我尝试致电buffer.toString()时,出现以下错误:

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

关于stackoverflow的许多问题都与我正在执行的相同功能(使用opencv编码)有关。以下是几个矛盾的答案。

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

在此答案中,暗示imencode返回具有2个元素的元组:

>>> img_str = cv2.imencode('.jpg', img)[1].tostring()
>>> type(img_str)
 'str'
  1. 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

imencode的OpenCV文档说,返回值是一个包含2个元素的元组,第二个是缓冲区。

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

任何建议都可以解决此问题。

1 个答案:

答案 0 :(得分:2)

错误明确指出:

  

AttributeError:“ numpy.ndarray”对象没有属性“ toString”

这意味着您拼写了错误的方法。将toString替换为tostring,以获得所需的结果。