python开发之HighGUI上位机开发(二)( 四 )
- event 鼠标事件类型 ,如上文所述EVENT_MOUSEMOVE等 。
- x 鼠标当前在窗口Windows下的x坐标
- y 鼠标在当前窗口Windows下的y坐标
- flags 鼠标事件发生过程值中的一些其他事件标志/状态
- EVENT_FLAG_LBUTTON 左键正在按下
- EVENT_FLAG_RBUTTON 右键正在被按下
- EVENT_FLAG_MBUTTON 中键正在被按下
- EVENT_FLAG_CTRLKEY CTRL键正在被按下
- EVENT_FLAG_SHIFTKEY SHIFT键正在被按下
- EVENT_FLAG_ALTKEY ALT键正在被按下
- param 用户自定义的参数
def draw_circle(event,x,y,flags,param):# 判断事件是否为 Left Button Double Clicckif event == cv2.EVENT_LBUTTONDBLCLK:cv2.circle(img,(x,y),20,(255,0,0),-1)1234
更复杂一些的判断方法 ,是结合flags我们起始可以在很多函数的参数看到flags 这类语句 。
例如我们想判断当前左键跟ALT键是不是处于同时被按下的状态 ,我们可以这么写:
def onMouse(event,x,y,flags,param):if flags == ( cv2.EVENT_FLAG_LBUTTON | cv2.EVENT_FLAG_ALTKEY):# 判断事件类型 执行相关操作do_something()1234
你也可以使用+运算 ,两者的效果是相同的 ,二进制位表示状态 。def onMouse(event,x,y,flags,param):if flags == ( cv2.EVENT_FLAG_LBUTTON + cv2.EVENT_FLAG_ALTKEY):# 判断事件类型 执行相关操作do_something()1234
我们也可以结合两者 。 做一个复杂的状态检测 。CTRL + 鼠标左键 ,移动鼠标 , 绘制一个系列圆圈 。# CTRL + 鼠标左键 ,移动鼠标 , 绘制一个系列圆圈def onMouse(event,x,y,flags,param):# 判断事件是否为 Left Button Double Clicckprint(flags)print(cv2.EVENT_FLAG_LBUTTON | cv2.EVENT_FLAG_CTRLKEY)if event == cv2.EVENT_MOUSEMOVE and flags == (cv2.EVENT_FLAG_LBUTTON | cv2.EVENT_FLAG_CTRLKEY ):cv2.circle(img,(x,y),20,(255,0,0),-1)1234567
【python开发之HighGUI上位机开发(二)】欢迎大家三连(关注、评论、点赞)一起学习- 信息|澜湄合作机制开通水资源合作信息共享平台
- 黑莓(BB.US)盘前涨逾32%,将与亚马逊开发智能汽车数据平台|美股异动 | US
- 不负众望|12小时卖了30万部!Redmi Note9不负众望,卢伟冰开心了?
- 表达|重磅!2021世界安防博览会官方宣贯会正式召开,百余家企业表达参展意愿
- iPhone|折叠屏iPhone要来?曝苹果开始测试|OPPO Reno5真机曝光
- 承受|折叠屏iPhone已开始测试?要求能承受10万次折叠,或在2年后发布
- 报名啦!宿迁开展第五届“十大科技之星”评选
- 开发自|不妥协不追随 Member’s Mark升级背后的“山姆哲学”
- 正确|新昌消防丨听说,这才是微信新表情的正确打开方式
- 优化|微软亚洲研究院发布开源平台“群策 MARO” 用于多智能体资源调度优化