问题描述
我需要使用 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 值?
解决方法
的文档
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)