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)
問題是,當我點擊圖像時,標記以不同的比例出現,並且不在圖像上,因爲它們應該是這樣。
我該如何修改我的代碼,所以當我點擊圖片時,所有的鼠標點擊都存儲並繪製在所需的位置?