matplotlib绘图figsize、savefig.dpi和figure.dpi的关系

最近开始用图像做深度学习了,由于是新手,在图像的生成和加载上面遇到很多问题,特此记录。

内联代码片

// 用matplotlib绘图并保存


plt.rcParams['figure.figsize'] = (4.48, 4.48) #2.24, 2.24 设置figure_size尺寸
plt.rcParams['savefig.dpi'] = 50 #图片像素
# plt.rcParams['figure.dpi'] = 300 #分辨率
plt.plot(t,X[0])
plt.axis('off')
plt.margins(0,0)
# plt.show()
plt.savefig('F:\\raw\\T_0\\figure.jpg')
 我想用ResNet50这个网络,这个网络的输入图片像素要求是(224,224),
 最开始我直接plt自己的图片,没有设置图片大小,绘制出来的图片像素是(640,480),显然太大了,怎么办呢?
 直接先用pytorch的transforms.Resize([256, 256]),再transforms.RandomCrop(224),
 这样输入就满足要求了,但是问题来了,
 Resize之后的图片太模糊,这样会直接影响深度模型提取图像特征。

因此需要在绘制图片是就达到像素(224,224)的要求,以后想换网络模型改变输入大小,可以用plt生成任意像素的图片,非常方便。

在网上查了一下,好多人都没说清楚怎么生成自己想要的像素大小的图片,也可能是我没找到。

一直搞不懂设置figure.figsize 和savefig.dpi 的区别和关系。对于做深度学习的人来说,我们关注的是图片的像素大小,敲重点:用matplotlib绘图的时候生成图片的像素大小=figure.figsize * savefig.dpi。例如上面代码生成的图片像素就是4.48*50,即(224,224)。

另外savefig.dpi设置的越小图片越清晰

用过plt的朋友应该都知道还有个figure.dpi可以设置分辨率,小白只想听到通俗易懂的解释,设置这个到底会影响什么呢?

figure.dpi 不会对保存的图片产生任何实质影响,只会影响plt.show()展示出来的图片

对于做深度学习的人来说,不希望用来训练的图片有坐标轴和边框这些无用信息,那么**plt.axis(‘off’)**就是掉坐标轴,**plt.margins(0,0)**就是去掉白边。

第一次写,只想记录学习过程,不喜轻喷!有不对的地方欢迎各位高手指正,互相学习。

你可能感兴趣的:(深度学习,python)