【问题标题】:how to cv2.imencode and imdecode (jpeg) for diffret QF values?如何对不同的 QF 值进行 cv2.imencode 和 imdecode (jpeg)?
【发布时间】:2021-01-04 17:07:32
【问题描述】:

我需要使用开放的 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)

但我在第二行出现错误:"Expected Ptr<cv::UMat> for argument 'buf'".

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

【问题讨论】:

    标签: opencv jpeg encode cv2 image-compression


    【解决方案1】:

    请查看imencode 和imdecode 的文档

    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)
    

    【讨论】:

    • 谢谢!你知道如何在不同的 QF 上测试它吗?
    • 打开文档?它会告诉您 imencode 的可用标志/设置。
    猜你喜欢
    • 2021-12-20
    • 2022-01-13
    • 2020-03-10
    • 1970-01-01
    • 1970-01-01
    • 2020-11-21
    • 2019-02-28
    • 2022-01-13
    • 2022-06-16
    相关资源
    最近更新 更多