如何在Python上使用Opencv对内存中的Webp格式进行编码/解码?

时间:2019-07-03 17:54:31

标签: python opencv

我正在尝试将webp格式的90,000张图像加载到内存中,并根据需要进行解码以提高速度。 但是,我无法获得以下测试代码来解码编码格式。 我将不胜感激任何指针。

img = cv2.imread(file)
retval, buf = cv2.imencode(".webp", img, [cv2.IMWRITE_WEBP_QUALITY, 100])
img = cv2.imdecode(buf, 1)
  

imdecode_(''):无法读取数据:OpenCV(4.1.0)/io/opencv/modules/imgcodecs/src/grfmt_webp.cpp:164:错误:(-215:断言失败)data.rows == 1在功能'readData'

3 个答案:

答案 0 :(得分:1)

根据doc,您应该这样做:

retval, buf = cv2.imencode(".webp", 
                           img, 
                           [cv2.IMWRITE_WEBP_QUALITY, 100])

img = cv2.imdecode(buf, 1)

答案 1 :(得分:0)

他是OpenCV错误,看来该修复程序将包含在将来的版本中。

https://github.com/opencv/opencv/issues/14978

https://github.com/opencv/opencv/pull/14989

答案 2 :(得分:0)

我将 opencv-python 升级到 4.5.1.48 并解决了问题