2016-08-07 16 views
0

私はpython matplotlib関数が非常に便利であることを発見しました。個々のピクセルが固定されていれば、画像処理の方がはるかに優れています。python matplotlibによるピクセル操作

ピクセル単位で処理したいと思います。問題は、 "handles.append"関数を使用した後に画像の余白が変化することです。

from skimage.io import imread 

import matplotlib.pyplot as plt 

img = imread('uk_figure.png') 

my_dpi = 96 
plt.figure(figsize=(800/my_dpi, 800/my_dpi), dpi = my_dpi, frameon=False) 

fig1 = plt.figure(1) 
fig1.set_figheight(40) #image size is set here, pixel = 8 *100 = 800 
fig1.set_figwidth(40) #image size is set here, pixel = 8 *100 = 800 

imgplot = plt.imshow(img) 

#to add code below 

plt.axis("off") 
plt.subplots_adjust(left = 0, right =1, top =1, bottom =0) 
plt.savefig("uk_figure_addcolor4.png", pad_inches=0) 

保存された数字は元の画像とまったく同じです。したがって、私は、ピクセル単位の処理で2つの画像を処理できると思います。

このコードを追加した後、matplotlibは自動的に画像のマージンを追加しました。したがって、ピクセルごとの処理は失敗する。固定ピクセルで画像を保存するようにmatplotlibに指示する方法はありますか?

x = [457,458,459,460] 
y = [288,289,290,291] 
handles = [] 
handles.append(plt.scatter(x,y, color='blue', marker='+')) #margin changes after adding this line 

答えて

1

軸制限の変更により余白が追加されます。イメージが1000×1000ピクセルの大きさであれば、plt.gca().set_xlim(0, 1000)plt.gca().set_ylim(0, 1000)を追加することで問題を解決できます。 plt.gca()が現在の軸を取得し、その軸にxとyの制限を設定します。

注:y-リミットをplt.gca().set_ylim(1000, 0)に戻す必要があるかもしれません。これは、通常、matplotlibがイメージの原点として左上隅を選択するためです。ランダムなデータを使用して、画像が反転されているかどうかを判断するのは難しいですが、画像に動機がある場合は、画像が反転しているかどうかを簡単に確認できます。それが反転されている場合は、上記のようにイルミートを反転させます。

関連する問題