1
Python 3でコードを書いて、DICOM画像上にいくつかのマーカーをプロットする。私は非常に短いプログラムを書いた:画像上でマウスのクリックをプロットする
メインプログラムでは、私は端末からDICOMファイル名を読み、画像をプロットする。
main_prog.py:
import sys
import dicom as dcm
import numpy as np
from matplotlib import pyplot as plt
from dicomplot import dicomplot as dcmplot
filename = sys.argv[1]
dicomfile = dcm.read_file(filename)
dicomimg = dicomfile.pixel_array
fig = plt.figure(dpi = 300)
ax = fig.add_subplot(1, 1, 1)
plt.set_cmap(plt.gray())
plt.pcolormesh(np.flipud(dicomimg))
dcm = dcmplot(ax)
plt.show()
そして、私は、ユーザーがクリックした座標を格納し、画像上の時間でそれらのそれぞれをプロットするクラスを定義:
dicomplot.py
from matplotlib import pyplot as plt
class dicomplot():
def __init__(self, img):
self.img = img
self.fig = plt.figure(dpi = 300)
self.xcoord = list()
self.ycoord = list()
self.cid = img.figure.canvas.mpl_connect('button_press_event', self)
def __call__(self, event):
if event.button == 1:
self.xcoord.append(event.x)
self.ycoord.append(event.y)
self.img.plot(self.ycoord, self.xcoord, 'r*')
self.img.figure.canvas.draw()
elif event.button == 2:
self.img.figure.canvas.mpl_disconnect(self.cid)
elif event.button == 3:
self.xcoord.append(-1)
self.ycoord.append(-1)
問題は、画像上をクリックすると、マーカが異なるスケールで表示され、画像の上に表示されないことにあります。
イメージをクリックすると、すべてのマウスクリックが保存され、希望の位置に表示されるように、コードを変更するにはどうすればよいですか?