OpenCV————鼠标绘制和滑动条

本文介绍了如何在OpenCV中利用鼠标事件进行图形绘制,包括点击和拖动创建矩形和圆形,并结合滑动条实现调色板功能,允许选择不同颜色的画笔进行绘制。
摘要由CSDN通过智能技术生成

导入包

import cv2
import numpy as np

可以通过下面的代码来查看所有的鼠标事件函数

 events=[i for i in dir(cv2) if 'EVENT' in i]#查看所有鼠标事件
 print(events)
 
输出为:
['EVENT_FLAG_ALTKEY',  flags 代表拖拽事件。按住alt键不放
 'EVENT_FLAG_CTRLKEY',按住ctrl键不放
 'EVENT_FLAG_LBUTTON',按住左键拖拽
 'EVENT_FLAG_MBUTTON',中键拖拽
 'EVENT_FLAG_RBUTTON',右键拖拽
 'EVENT_FLAG_SHIFTKEY',按住shift不放
 
 'EVENT_LBUTTONDBLCLK', event鼠标事件。左键双击
 'EVENT_LBUTTONDOWN',按下左键
 'EVENT_LBUTTONUP',释放左键
 'EVENT_MBUTTONDBLCLK',
 'EVENT_MBUTTONDOWN',
 'EVENT_MBUTTONUP',
 'EVENT_MOUSEHWHEEL',
 'EVENT_MOUSEMOVE',
 'EVENT_MOUSEWHEEL',
 'EVENT_RBUTTONDBLCLK',
 'EVENT_RBUTTONDOWN',
 'EVENT_RBUTTONUP']

创建回调函数。当双击鼠标左键时,自动出现圆

def draw_circle(event,x,y,flags,param):#创建回调函数,参数分别是:event鼠标事件,flags鼠标拖拽事件,x,y中心坐标
    if event==cv2.EVENT_LBUTTONDBLCLK:#双击鼠标左键
        cv2.circle(img,(x,y),100,(255,0,0),-1)

img=np.zeros((512,512,3),np.uint8)#黑色画布,长宽都为512,3表示BGR3种颜色,uint8是用0-255表示所有颜色
cv2.namedWindow('image')#窗口命名
cv2.setMouseCallback('image',draw_circle)#用鼠标画
while(1):
    cv2.imshow('image',img)
    if cv2.waitKey(20)&0xFF==27:#。cv2.waitKey(delay)返回值:
        # 1、等待期间有按键:返回按键的ASCII码(比如:Esc的ASCII码为27);
        # 2、等待期间没有按键:返回 -1;
        break
cv2.destroyAllWindows()

拖动鼠标来画矩形或者圆

drawing=False
mode=True
ix,iy=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值