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-境界線が生成されている場所だと思います。

プロットに他の要素が追加されているために Figure を保存する必要がある場合は、次の 3 つのことを行う必要があります。

  • 軸のサイズを変更して Figure を埋めます
  • フィギュアの縦横比が元の画像と同じであることを確認してください
  • dpi保存されたイメージが入力イメージと同じ次元になるように、Figure の を設定します。

これらはすべて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 に答える