OpenCV Python保存jpg指定质量; 给出了SystemError

seb*_*ase 16 python jpeg opencv

我刚刚在Windows 7(32位)/ Python 2.7.3上安装了最新的OpenCV 2.4,
但我仍然得到了使用测试版的相同错误:

>>> import cv2
>>> a = cv2.imread(r"DMap.jpg")
>>> a.shape
(1080, 1920, 3)
>>> cv2.imwrite('img_CV2_90.jpg', a, [cv2.IMWRITE_JPEG_QUALITY, 90])
Traceback (most recent call last):
  File "<input>", line 1, in <module>
SystemError: error return without exception set
Run Code Online (Sandbox Code Playgroud)

有任何想法吗 ?使用元组而不是列表,或在序列中添加尾部0没有帮助 - 同样的错误.

谢谢 - 塞巴斯蒂安哈斯

小智 30

可能是由于imwrite()从Python到C的一些错误的参数包装cv2.IMWRITE_JPEG_QUALITY(其类型为"long")导致一些奇怪的问题...尝试将此常量转换为"int"类型:

cv2.imwrite('img_CV2_90.jpg', a, [int(cv2.IMWRITE_JPEG_QUALITY), 90])
Run Code Online (Sandbox Code Playgroud)

对我来说它解决了这个问题(python 2.7.2,opencv 2.4.1)