微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何 cv2.imencode 和 imdecode (jpeg) 来获取不同的 QF 值?

如何解决如何 cv2.imencode 和 imdecode (jpeg) 来获取不同的 QF 值?

我需要使用 open cv 函数cv2.imencode,cv2.imdecode 来压缩 (jpeg) 和解压缩 (jpeg) 以获得不同的 QF 值。 图片是来自https://imagecompression.info/test_images/

的“bridge.ppm

我试过了:

bridge = cv2.imread('./bridge.ppm')
bridge_en = cv2.imencode('.jpeg',bridge)
bridge_de = cv2.imdecode('.jpeg',bridge_en)
cv2.imshow('image',bridge_de)

但我在第 2 行收到错误消息:"Expected Ptr<cv::UMat> for argument 'buf'".

另外,如何更改和测试不同的 QF 值?

解决方法

请查看 imencodeimdecode

的文档

imencode 返回两个值,编码的缓冲区是第二个。并且 imdecode 接受编码的缓冲区和一个标志。所以:

bridge = cv2.imread('./bridge.ppm')
bridge_en = cv2.imencode('.jpeg',bridge)[1] # you need the second value
bridge_de = cv2.imdecode(bridge_en,cv2.IMREAD_UNCHANGED) # or any other flag,same as 'imread'
cv2.imshow('image',bridge_de)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。