用鼠标作图,可以调用一个自定义函数实现:
def draw(event,x,y,flags,param):
r=cv2.getTrackbarPos('R','a')
g=cv2.getTrackbarPos('G','a')
b=cv2.getTrackbarPos('B','a')
color=(b,g,r)
global ix,iy,drawing,m
if event==cv2.EVENT_LBUTTONDOWN:
drawing=True
ix,iy=x,y
elif event==cv2.EVENT_MOUSEMOVE and flags==cv2.EVENT_FLAG_LBUTTON:
drawing==True
if m==True:
cv2.rectangle(img,(ix,iy),(x,y),color,-1)
else:
cv2.circle(img,(x,y),3,color,-1)
elif event==cv2.EVENT_LBUTTONUP:
drawing==False
按下鼠标左键并拖动,并且模式m为真,则在画板里面画矩形;
按下鼠标左键并拖动,并且模式m为假,则在画板里面画一串半径为3的小圆;
抬起鼠标,这个过程结束;
这里的逻辑关系还是很明确的。