鼠标回调函数

时间:2018-10-12 05:12:12

标签: python

我有以下代码:

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)

我不理解在矩形上使用xiyi的情况。有一行指出xi,yi = x,y。会一样吗?如何绘制矩形?据我了解,要绘制一个矩形,应该有两组坐标。我看不到显示ix,iy的x和y值会不同的那一行。

有人可以解释吗?

1 个答案:

答案 0 :(得分:0)

这很简单,这是逐步执行的操作:

用户单击-当前鼠标位置x,y存储为ix,iy,并且绘图设置为true

用户移动鼠标-如果绘图为true且mode为true,则使用保存的ix,iy和新的当前x,y绘制一个矩形(请注意ix,iy不再等于x,y,因为它仅保存了当按下鼠标按钮时触发)

用户释放鼠标-绘图设置为false,因此可以在不绘制任何内容的情况下移动鼠标并保存任何当前图像