我想直接使用压缩的JPEG图像.我知道使用PIL/Pillow我可以在保存时压缩图像,然后回读压缩图像 - 例如
from PIL import Image
im1 = Image.open(IMAGE_FILE)
IMAGE_10 = os.path.join('./images/dog10.jpeg')
im1.save(IMAGE_10,"JPEG", quality=10)
im10 = Image.open(IMAGE_10)
Run Code Online (Sandbox Code Playgroud)
但是,我想要一种方法来做到这一点,而无需无关的写和读.是否有一些Python包带有一个函数,它将图像和质量数作为输入并返回具有给定质量的图像的jpeg版本?
我目前使用的是 Anaconda 4.3.27、Python 3.6.2 和 OpenCV 3.3.0
当我尝试时
img1 = cv2.imread('D:\Images\3D-Matplotlib.png')
img2 = cv2.imread('D:\Images\mainsvmimage.png')
Run Code Online (Sandbox Code Playgroud)
我得到libpng error: Read Error并出现一个弹出窗口,表明 Python 停止工作。我已经尝试用“\\”和“/”替换“\”,但在这些情况下也会出现相同的错误。当我尝试读取 jpg 而不是 png 时,我没有收到错误。有人知道这里可能有什么问题吗?
提前致谢!
编辑:
cv2.imwrite 也给出错误:
libpng error: Write Error
Run Code Online (Sandbox Code Playgroud) 我真的很痛苦这个问题.
最初,在使用matplotlib绘制内容后,我可以轻松保存图像.
但是,安装scipy之后,我再也无法保存我的图像了.
(我使用pip安装了matplot和scipy.)
我试图查找一些信息,但我仍然无法解决问题.
我的操作系统是Mac OS X Lion(10.7)
我认为以下链接是一些相关问题
https://github.com/ipython/ipython/issues/2710
Matplotlib python savefig运行时错误python 3.2.3
matplotlib和libpng问题ipython notebook
libpng15静态链接问题
看来如果我可以重新链接库或设置DYLD_LIBRARY_PATH(实际上我不知道那是什么......)
或许我必须重新编译一些东西?
顺便说一下,我对基于linux的系统很新,所以如果有人能以一种相对简单的方式解释它,那将是非常好的.非常感谢你.
以下是一些错误消息:
libpng warning: Application was compiled with png.h from libpng-1.5.4
libpng warning: Application is running with png.c from libpng-1.4.10
libpng warning: Incompatible libpng version in application and library
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
/Library/Python/2.7/site-packages/matplotlib/backends/backend_macosx.pyc in save_figure(self, *args)
476 if filename is None: # Cancel
477 return
--> 478 self.canvas.print_figure(filename)
479
480 def prepare_configure_subplots(self):
/Library/Python/2.7/site-packages/matplotlib/backend_bases.pyc in print_figure(self, filename, …Run Code Online (Sandbox Code Playgroud)