我有以下代码:
drawing = False # true if mouse is pressed
mode = True # if True, draw rectangle. Press 'm' to toggle to curve
ix,iy = -1,-1
# mouse callback function
def draw_circle(event,x,y,flags,param):
global ix,iy,drawing,mode
if event == cv2.EVENT_LBUTTONDOWN:
drawing = True
ix,iy = x,y
elif event == cv2.EVENT_MOUSEMOVE:
if drawing == True:
if mode == True:
cv2.rectangle(img,(ix,iy),(x,y),(0,255,0),-1)
else:
cv2.circle(img,(x,y),20,(0,0,255),-1)
elif event == cv2.EVENT_LBUTTONUP:
drawing = False
if mode == True:
cv2.rectangle(img,(ix,iy),(x,y),(0,255,0),-1)
else:
cv2.circle(img,(x,y),20,(0,0,255),-1)
我不理解在矩形上使用xi
和yi
的情况。有一行指出xi,yi = x,y
。会一样吗?如何绘制矩形?据我了解,要绘制一个矩形,应该有两组坐标。我看不到显示ix,iy
的x和y值会不同的那一行。
有人可以解释吗?
答案 0 :(得分:0)
这很简单,这是逐步执行的操作:
用户单击-当前鼠标位置x,y存储为ix,iy,并且绘图设置为true
用户移动鼠标-如果绘图为true且mode为true,则使用保存的ix,iy和新的当前x,y绘制一个矩形(请注意ix,iy不再等于x,y,因为它仅保存了当按下鼠标按钮时触发)
用户释放鼠标-绘图设置为false,因此可以在不绘制任何内容的情况下移动鼠标并保存任何当前图像