3

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

我想要的是获得一张图像,经过一些处理后保存它,并拥有一个尺寸相同且没有白色/灰色空间的图像。

实际上,我尝试做的是使用 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')

问候

4

1 回答 1

4

这取决于您如何保存图像 - 您可能应该使用

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] )

试试看 - 如果图像被绘制旋转或其他东西,我可能已经切换了一个维度。

于 2012-08-01T16:57:43.157 回答