近期在用Python做医学图像处理系统制作,逐步跟大家分享我遇到的问题以及解决方案。今天来跟大家说一下在matplotlib库显示界面中进行鼠标交互绘制等操作。
先上图,下图为用matplotlib进行显示的脊柱图像(.dicom格式),后期跟大家介绍.dicom文件的读取以及相应图像处理方式。
本文要做的就是在此界面用鼠标进行交互绘制操作。
#鼠标事件
def OnClick(event):
global Coords1x,Coords1y
global Coords3x,Coords3y
#ax = plt.gca()
if event.button ==1:
Coords1x = event.xdata
Coords1y = event.ydata
if event.button == 3:
Coords3x = event.xdata
Coords3y = event.ydata
def OnMouseMotion(event):
global Coords2x,Coords2y,x1,y1
if event.button == 1:
Coords2x = event.xdata
Coords2y = event.ydata
x1 = [Coords1x,Coords2x]
y1 = [Coords1y,Coords2y]
ax = plt.gca()
lines = ax.plot(x1,y1,picker = 20)
ax.figure.canvas.draw()
#删除之前的线条,进行更新
l = lines.pop(0)
l.remove()
del l
elif event.button == 3:
Coords4x = event.xdata
Coords4y = event.ydata
x2 = [Coords3x,Coords4x]
y2 = [Coords3y,Coords4y]
ax1 = plt.gca()
#lines = ax1.plot(x1,y1,picker = 5)
lines1 = ax1.plot(x2,y2,picker = 20)
ax1.figure.canvas.draw()
#删除之前的线条,进行更新
l = lines1.pop(0)
l.remove()
del l
##关联鼠标点击事件
fig.canvas.mpl_connect('button_press_event',OnClick)
fig.canvas.mpl_connect('motion_notify_event',OnMouseMotion)
完成绘制操作