2012-08-01 71 views
0

我拍了imread()的图像,但图像的大小与图像不同。另外,当我保存图形时,图像周围的白色/灰色空间被认为是图像的一部分。排列图像大小matplotlib

我想要的是得到一个图像,保存它的一些过程后,并有相同的大小和没有白色/灰色空间的图像。

其实,我试图做的是通过使用NetworkX包在图像上绘制图形并保存我在其他地方使用的图形。

代码就是这样的;

import matplotlib.pyplot as plt 
import networkx as nx 
import matplotlib.image as mpimg 


G = nx.cycle_graph(80) 
pos = nx.circular_layout(G) 
img = mpimg.imread(path1) 
plt.imshow(img) 

nx.draw(G,pos) 
nx.draw(G, pos=pos) 

plt.axis('off') 
plt.show() 
plt.savefig('test.png') 

问候

回答

1

这取决于你如何保存你的形象 - 你应该使用

import matplotlib.pylab as pp 
pp.imwrite('savedimage.png', matrix) 

,而不是savefig选项从创建人物 - 我猜想这就是你的边框正在生成。

如果您需要保存的数字,因为有添加到情节等元素,那么你需要做三件事情,

  • 调整轴,以填补数字
  • 确保数字已经与原始图像相同的长宽比
  • 设置图的dpi,使得保存的图像的尺寸与输入图像的尺寸相同。

这些都在matplotlib

步骤完成1:

ax = pp.gca() 
ax.set_position([0,0,1,1]) 

步骤2:

asprat = float(img.shape[0])/img.shape[1] 
sz = fig.get_size_inches() 
fig.set_figsize_inches([sz[0], asprat * sz[1]) 

步骤3:

fig.set_dpi(img.shape[0]/sz[0]) 

试试看 - 如果图像被旋转绘制或者其他东西可能已经切换了尺寸。

+0

@AhmetTuğrulBayrak:请将您的代码附加到您的问题的结尾,它在评论中不可读。 – jmetz 2012-08-01 17:48:01

+0

对不起,我将代码添加到问题中。 – 2012-08-01 17:55:08

+2

@AhmetTuğrulBayrak:如果它是正确的,请接受这个答案,或者让我知道它是否无效 – jmetz 2012-08-01 18:43:25