连锁图像严重降级

问题描述 投票:0回答:2

我试图在我的Jupyter笔记本上显示几张图片。但是,像素非常粗糙,如下所示.enter image description here

原始图像的像素清晰。我该如何改善这个问题?这是对图片是狗还是猫进行分类的特定过程。我在同一目录下的文件夹中有许多狗和猫的照片,只是从那里拿走它们。图片是我刚尝试使用matplotlib在Jupyter笔记本上显示的。先感谢您。

python matplotlib pixel
2个回答
1
投票

要强制matplotlib内联图像的分辨率:

import matplotlib as plt

dpi = 300 # Recommended to set between 150-300 for quality image preview
plt.rcParams['figure.dpi'] = dpi

我认为它默认使用80 dpi左右的非常低的设置。


1
投票

仅仅因为您试图在屏幕上显示400像素左右的64像素大图像,图像质量似乎在示例图片中降级。因此,每个原始像素包括屏幕上的若干像素。

如果目的是简单地在屏幕上以原始大小显示图像,那么您似乎根本不想使用matplotlib。

%matplotlib inline
import numpy as np
from IPython import display
from PIL import Image

a = np.random.rand(64,64,3)
b = np.random.rand(64,64,3)
c = (np.concatenate((a,b), axis=1)*255).astype(np.uint8)
display.display(Image.fromarray(c))

enter image description here

要使用matplotlib获得类似的结果,您需要裁剪轴周围的边距,并确保图形大小与要显示的数组的大小完全相同。

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt

a = np.random.rand(64,64,3)
b = np.random.rand(64,64,3)
c = np.concatenate((a,b), axis=1)

fig, ax = plt.subplots(figsize=(c.shape[1]/100.,c.shape[0]/100.), dpi=100)
fig.subplots_adjust(0,0,1,1)
ax.axis("off")
_ = ax.imshow(c)

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.