【问题标题】:opencv image encodeing returns array, instead of bufferopencv 图像编码返回数组,而不是缓冲区
【发布时间】:2018-11-23 06:34:54
【问题描述】:

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

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

感谢您提出解决此问题的任何建议。

【问题讨论】:

    标签: python numpy opencv


    【解决方案1】:

    错误清楚地表明:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-29
      • 2021-12-30
      • 2017-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 2013-01-21
      相关资源
      最近更新 更多