【问题标题】:Issue opening cv2 image from base 64 encoded image: error: (-215:Assertion failed)问题从 base 64 编码图像打开 cv2 图像:错误:(-215:断言失败)
【发布时间】:2020-12-05 02:40:17
【问题描述】:

我正在使用这个功能

def data_uri_to_cv2_img(uri):
    encoded_data = uri.split(',')[1]
    nparr = np.frombuffer(base64.b64decode(encoded_data), np.uint8)
    img = cv2.imdecode(nparr, cv2.IMREAD_COLOR)
    return img

从 base64 编码的字符串开始获取 cv2 图像。我从this stackoverflow answer 获得了代码。

但是,在这种特殊情况下,我得到了一个错误:

src_val = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAEALAAAAAABAAEAAAIBTAA7"

img = data_uri_to_cv2_img(src_val)
cv2.imshow('ay', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

导致此错误的原因:

Traceback (most recent call last):   File "playground.py", line 14, in
<module>
    cv2.imshow('ay', img) cv2.error: OpenCV(4.4.0) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-sxpsnzt6\opencv\modules\highgui\src\window.cpp:376:
error: (-215:Assertion failed) size.width>0 && size.height>0 in
function 'cv::imshow'

问题出在哪里?字符串格式是否错误?是因为它编码了一个gif吗?这个功能有限制吗?

【问题讨论】:

    标签: python opencv base64


    【解决方案1】:

    图片是 1x1 像素的透明 GIF。

    imdecode() 返回无。

    尝试 VideoCapture() 代替。 OpenCV 似乎将 GIF 理解为一种视频格式...... GIF 可以是一系列图片,所以这是有道理的。

    【讨论】:

      猜你喜欢
      • 2020-02-03
      • 2020-03-29
      • 1970-01-01
      • 2022-12-03
      • 2021-06-27
      • 2021-02-13
      • 2022-10-15
      • 2013-12-09
      • 2021-03-14
      相关资源
      最近更新 更多