opencv3/python 鼠标响应操作详解


Posted in Python onDecember 11, 2019

鼠标回调函数:

def setMouseCallback(
windowName,     #窗口名称
onMouse,      #鼠标响应处理函数
param=None)     #处理函数的ID

event鼠标事件:

event:
EVENT_LBUTTONDBLCLK = 7     左键双击
EVENT_LBUTTONDOWN = 1      左键点击
EVENT_LBUTTONUP = 4       左键释放
EVENT_MBUTTONDBLCLK = 9     中间释放
EVENT_MBUTTONDOWN = 3      中间点击
EVENT_MBUTTONUP = 6       中间释放
EVENT_MOUSEHWHEEL = 11     滚轮事件
EVENT_MOUSEMOVE = 0       滑动
EVENT_MOUSEWHEEL = 10      滚轮事件
EVENT_RBUTTONDBLCLK = 8     右键双击
EVENT_RBUTTONDOWN = 2      右键点击
EVENT_RBUTTONUP = 5       右键释放


flags:
EVENT_FLAG_ALTKEY = 32     按Alt不放事件
EVENT_FLAG_CTRLKEY = 8     按Ctrl不放事件
EVENT_FLAG_LBUTTON = 1     左键拖拽
EVENT_FLAG_MBUTTON = 4     中键拖拽
EVENT_FLAG_RBUTTON = 2     右键拖拽
EVENT_FLAG_SHIFTKEY = 16    按Shift不放事件

示例

在图像上用鼠标点击左键拖拽画一矩形,并输出矩形信息:

import cv2
def draw_rectangle(event,x,y,flags,param):
  global ix, iy
  if event==cv2.EVENT_LBUTTONDOWN:
    ix, iy = x, y
    print("point1:=", x, y)
  elif event==cv2.EVENT_LBUTTONUP:
    print("point2:=", x, y)
    print("width=",x-ix)
    print("height=", y - iy)
    cv2.rectangle(img, (ix, iy), (x, y), (0, 255, 0), 2)

img = cv2.imread("max.png") #加载图片
cv2.namedWindow('image')
cv2.setMouseCallback('image', draw_rectangle)
while(1):
  cv2.imshow('image', img)
  if cv2.waitKey(20) & 0xFF == 27:
    break
cv2.destroyAllWindows()

输出:

point1:= 254 64
point2:= 708 569
width= 454
height= 505

opencv3/python 鼠标响应操作详解

以上这篇opencv3/python 鼠标响应操作详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现的tab文件操作类分享
Nov 20 Python
详解Python函数可变参数定义及其参数传递方式
Aug 02 Python
python中的字典操作及字典函数
Jan 03 Python
Python搭建代理IP池实现获取IP的方法
Oct 27 Python
Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析
Nov 07 Python
解决python彩色螺旋线绘制引发的问题
Nov 23 Python
python实现word文档批量转成自定义格式的excel文档的思路及实例代码
Feb 21 Python
安装多个版本的TensorFlow的方法步骤
Apr 21 Python
python判断正负数方式
Jun 03 Python
Python bisect模块原理及常见实例
Jun 17 Python
Python把图片转化为pdf代码实例
Jul 28 Python
使用AJAX和Django获取数据的方法实例
Oct 25 Python
通过实例简单了解Python中yield的作用
Dec 11 #Python
opencv3/Python 稠密光流calcOpticalFlowFarneback详解
Dec 11 #Python
centos7中安装python3.6.4的教程
Dec 11 #Python
python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
Dec 11 #Python
Python3 中作为一等对象的函数解析
Dec 11 #Python
opencv3/C++图像像素操作详解
Dec 10 #Python
Pandas时间序列重采样(resample)方法中closed、label的作用详解
Dec 10 #Python
You might like
PHP 和 XML: 使用expat函数(三)
2006/10/09 PHP
php循环table实现一行两列显示的方法
2015/06/04 PHP
php正则判断是否为合法身份证号的方法
2017/03/16 PHP
php如何获取Http请求
2020/04/30 PHP
javascript parseInt 函数分析(转)
2009/03/21 Javascript
11个用于提高排版水平的基于jquery的文字效果插件
2012/09/14 Javascript
点击页面其它地方隐藏该div的两种思路
2013/11/18 Javascript
javaScript实现可缩放的显示区效果代码
2015/10/26 Javascript
js实现自定义进度条效果
2017/03/15 Javascript
关于vue-resource报错450的解决方案
2017/07/24 Javascript
vue移动端轻量级的轮播组件实现代码
2018/07/12 Javascript
angular6.x中ngTemplateOutlet指令的使用示例
2018/08/09 Javascript
基于Vue 2.0 监听文本框内容变化及ref的使用说明介绍
2018/08/24 Javascript
详解如何webpack使用DllPlugin
2018/09/30 Javascript
vue中子组件传递数据给父组件的讲解
2019/01/27 Javascript
Vue使用localStorage存储数据的方法
2019/05/27 Javascript
vue导入.md文件的步骤(markdown转HTML)
2020/12/31 Vue.js
[04:48]DOTA2亚洲邀请赛林书豪为VGJ加油
2017/04/01 DOTA
[53:50]CHAOS vs Mineski 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
在RedHat系Linux上部署Python的Celery框架的教程
2015/04/07 Python
Python将图片批量从png格式转换至WebP格式
2020/08/22 Python
用生成器来改写直接返回列表的函数方法
2017/05/25 Python
python中关于for循环的碎碎念
2017/06/30 Python
手把手教你如何安装Pycharm(详细图文教程)
2018/11/28 Python
python实现比较类的两个instance(对象)是否相等的方法分析
2019/06/26 Python
使用Python实现画一个中国地图
2019/11/23 Python
python连接mongodb集群方法详解
2020/02/13 Python
python 弧度与角度互转实例
2020/04/15 Python
Python私有属性私有方法应用实例解析
2020/09/15 Python
澳大利亚儿童和婴儿产品在线商店:Lime Tree Kids
2017/10/05 全球购物
中学教师自我鉴定
2014/02/07 职场文书
会计岗位职责范本
2014/03/07 职场文书
水利水电建筑施工应届生求职信
2014/07/04 职场文书
毕业生代领毕业材料的授权委托书
2014/09/29 职场文书
中秋节寄语2015
2015/03/24 职场文书
初婚初育证明范本
2015/06/18 职场文书