Matplotlib dpi被忽略

时间:2017-09-13 17:33:15

标签: python python-2.7 matplotlib

这不是一个重复的问题。我已经处理了执行一些OpenCV函数后得到的图像。我想用1000 dpi保存该文件但它不能正常工作

import matplotlib.pyplot as plt
import matplotlib.image as mpimg
plt.rcParams['savefig.dpi'] = 1000


#Then after some processing

mask = plt.read(mask)
plt.axis('off')
plt.imshow(mask,cmap='gray')


plt.savefig('D:/newapproach/T&Oplt.jpg',dpi=1000,bbox_inches='tight')
plt.show()

文件以96 dpi保存,无论我指定为dpi

1 个答案:

答案 0 :(得分:1)

问题中的代码运行正常。您可以通过简单地查看宽度和高度(以像素为单位)来验证,如果您没有更改图形大小,则应该在~4000的范围内(从上面的代码中不知道)。

请注意,即使所有内容都按预期工作,某些图像查看器以及操作系统的属性对话框也可能显示96dpi。这主要是因为dpi实际上不是像素图像的合理数字。像素图像仅由像素数定义,并且本质上不具有与它们相关联的dpi。

您可能拥有的选项是使用PIL打开保存的图像并再次保存,直接指定dpi:

import numpy as np
import matplotlib.pyplot as plt

mask = np.random.rand(30,30)
plt.axis('off')
plt.imshow(mask,cmap='gray')

plt.savefig('figure.jpg',dpi=300,bbox_inches='tight')

from  PIL import Image
im = Image.open('figure.jpg')
im.save('figure.jpg',dpi=[300,300])

plt.show()