我正在使用python和matplotlib处理一些图像处理算法。我想使用子图(例如,输出图像旁边的原始图像)在图中显示原始图像和输出图像。输出图像的尺寸与原始图像的尺寸不同。我想让子图以实际尺寸显示图像(或统一缩放),以便我可以比较苹果和苹果#34;。我目前使用:
plt.figure()
plt.subplot(2,1,1)
plt.imshow(originalImage)
plt.subplot(2,1,2)
plt.imshow(outputImage)
plt.show()
结果是我得到了子图,但两个图像都被缩放,因此它们的大小相同(尽管输出图像上的轴与输入图像的轴不同)。只是为了明确:如果输入图像是512x512并且输出图像是1024x1024,则两个图像都显示为它们的大小相同。
有没有办法强制matplotlib以各自的实际尺寸显示图像(优选的解决方案,以便matplotlib的动态重新缩放不会影响显示的图像)或缩放图像使得它们是否显示与其实际尺寸成比例的尺寸?
答案 0 :(得分:11)
答案 1 :(得分:1)
在此处适应约瑟夫的答案:显然,默认dpi更改为100,因此为了安全起见,您可以直接从rcParams中访问dpi,如下所示:
import matplotlib as mpl
def display_image_in_actual_size(im_path):
dpi = mpl.rcParams['figure.dpi']
im_data = plt.imread(im_path)
height, width, depth = im_data.shape
# What size does the figure need to be in inches to fit the image?
figsize = width / float(dpi), height / float(dpi)
# Create a figure of the right size with one axes that takes up the full figure
fig = plt.figure(figsize=figsize)
ax = fig.add_axes([0, 0, 1, 1])
# Hide spines, ticks, etc.
ax.axis('off')
# Display the image.
ax.imshow(im_data, cmap='gray')
plt.show()
display_image_in_actual_size("./your_image.jpg")
答案 2 :(得分:0)