OpenCV中鼠标交互-绘制矩形框

OpenCV中鼠标交互-绘制矩形框

·具体流程:
1、绑定回调函数
2、在回调函数中检测触发的事件
3、根据不同事件做出不同动作

一、绑定回调函数

cv2.setMouseCallback('origianl',click_event)

'origianl’为窗体的名字,client_event为回调函数的函数名

二、在回调函数中检测触发的事件

回调函数的的参数为固定格式:
第一个参数event:事件类型
x:为坐标x
y:为坐标y
flags:为鼠标滚轮的方向
param:为传入参数

def click_event(event,x,y,flags,param):
    global startP
    global endP
    global flag
    global currentP
    global stop
    global img
    img2 = img.copy()
    if event == cv2.EVENT_RBUTTONDOWN:
        flag = 1
        startP = (x,y)
        stop = 1

    if event == cv2.EVENT_LBUTTONDOWN:
        flag = 0
        endP = (x,y)
        cv2.rectangle(img,startP,endP,[0,0,255])
        stop = 0

    if event == cv2.EVENT_MOUSEMOVE:
        currentP = (x,y)
        if flag == 1:
            cv2.rectangle(img2,startP,currentP,[0,0,255])
            cv2.imshow('origianl',img2)
    if event == cv2.EVENT_MOUSEWHEEL:
        print(x,y)
        print(flags)
        print(param)

三、根据不同事件做出不同动作

常用的鼠标事件有以下几种:cv2.EVENT_RBUTTONDOWN、cv2.EVENT_RBUTTONUP、cv2.EVENT_MOUSEMOVE、cv2.MOUSEWHEEL.以上四种事件为,右键按下事件、右键松开事件、鼠标移动事件、鼠标滚轮事件
右键按下为矩形框开始点,左键按下为矩形框右下角结束点,将图像绘制在img图像中可以保存。按下右键然后移动鼠标会实时显示矩形框,此时将矩形框显示在img的copy版上并不保存。
具体的实现效果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值