python开发之HighGUI上位机开发(二)( 三 )
展示效果:
文章插图
实例2-设定trackbar的默认取值设定Trackbar上的默认值为125
import cv2# 创建窗口cv2.namedWindow('image_win')value = http://kandian.youth.cn/index/Nonedef update(x):# 回调函数 更新value的值global valuevalue = xprint('Update Value, value =http://kandian.youth.cn/index/{}'.format(value))# 创建一个滑动条对象 数值名字叫做 value_name# 滑动条创建在 image_win 窗口之下# 取值范围为 0-255, 回调函数为updatecv2.createTrackbar('value_name','image_win',0,255,update)cv2.setTrackbarPos('value_name','image_win',125)# 等待按键按下cv2.waitKey(0)# 销毁窗口cv2.destroyAllWindows()12345678910111213141516171819202122232425
展示效果:
文章插图
实例3-获取多个Trackbar的Pos三个trackar , 每次有任意一个变更的时候都同步所有的值 。
import cv2# 创建窗口cv2.namedWindow('image_win')value = (0, 0, 0)def update(x):# 回调函数 更新value的值global valuer_value = http://kandian.youth.cn/index/cv2.getTrackbarPos('R','image_win')g_value = http://kandian.youth.cn/index/cv2.getTrackbarPos('G', 'image_win')b_value = http://kandian.youth.cn/index/cv2.getTrackbarPos('B', 'image_win')value = http://kandian.youth.cn/index/(r_value, g_value, b_value)print('Update Value, value =http://kandian.youth.cn/index/{}'.format(value))# 创建一个滑动条对象 数值名字叫做 R / G / B # 滑动条创建在 image_win 窗口之下# 取值范围为 0-255, 回调函数为updatecv2.createTrackbar('R','image_win',0,255,update)cv2.createTrackbar('G','image_win',0,255,update)cv2.createTrackbar('B','image_win',0,255,update)cv2.setTrackbarPos('R','image_win',125)cv2.setTrackbarPos('G','image_win',125)cv2.setTrackbarPos('B','image_win',125)# 等待按键按下cv2.waitKey(0)# 销毁窗口cv2.destroyAllWindows()1234567891011121314151617181920212223242526272829303132333435
展示效果:
文章插图
按键组件主要理解如何使用HighGUI实现按键功能 。
按键组件的潜规则OpenCV里面的按键组件其实不存在的, 有两种方式可以实现按键效果:
- 第一种就是键盘事件监听(waitKey), 这一种可以算是实体按键.
- 另外一种是改造滑动条组件(Trackbar)变成按键.
演示代码
import cv2import time# 创建窗口cv2.namedWindow('image_win')def do_something():print('Button Pressed!!')print('Do Something')def update(x):if x == 1:do_something()cv2.waitKey(500)cv2.setTrackbarPos('button', 'image_win', 0)cv2.createTrackbar('button','image_win',0,1,update)# 等待按键按下cv2.waitKey(0)# 销毁窗口cv2.destroyAllWindows()123456789101112131415161718192021
展示效果文章插图
鼠标事件监听主要理解如何使用HighGUI进行鼠标事件监听 , 介绍了都有哪些鼠标事件及其用法 。
文章插图
鼠标事件分类大家想一想鼠标都可以有哪些事件?
其实我们可以用脚本的方式 , 查看cv2 所有以EVENT开头的预定义变量的名称列表
'''查看cv2都支持哪些事件'''import cv2events=[i for i in dir(cv2) if 'EVENT'in i]for event in events:print(event)12345678910
运行结果:EVENT_FLAG_ALTKEYEVENT_FLAG_CTRLKEYEVENT_FLAG_LBUTTONEVENT_FLAG_MBUTTONEVENT_FLAG_RBUTTONEVENT_FLAG_SHIFTKEYEVENT_LBUTTONDBLCLKEVENT_LBUTTONDOWNEVENT_LBUTTONUPEVENT_MBUTTONDBLCLKEVENT_MBUTTONDOWNEVENT_MBUTTONUPEVENT_MOUSEHWHEELEVENT_MOUSEMOVEEVENT_MOUSEWHEELEVENT_RBUTTONDBLCLKEVENT_RBUTTONDOWNEVENT_RBUTTONUP123456789101112131415161718
快去试一试吧 。鼠标事件列表(event list)
- EVENT_MOUSEMOVE 鼠标移动 Mouse Move
- EVENT_LBUTTONDOWN 鼠标左键点击 Left Button Down
- EVENT_RBUTTONDOWN 鼠标右键点击 Right Button Down
- EVENT_MBUTTONDOWN 鼠标中键点击 Middle Button Down
- EVENT_LBUTTONUP 鼠标左键抬起 Left Button Up
- EVENT_RBUTTONUP 鼠标右键抬起 Right Button Up
- EVENT_MBUTTONUP 鼠标中键抬起 Middle Button Up
- EVENT_LBUTTONDBLCLK 鼠标左键双击 Left Button Double Click
- EVENT_RBUTTONDBLCLK 鼠标右键双击 Right Button Double Click
- EVENT_MBUTTONDBLCLK 鼠标中键双击 Middle Button Double Click
def onMouse(event,x,y,flags,param):# 判断事件是否为 Left Button Double Clicckif event == cv2.EVENT_LBUTTONDBLCLK:# 判断事件类型 执行相关操作do_something()12345
- 信息|澜湄合作机制开通水资源合作信息共享平台
- 黑莓(BB.US)盘前涨逾32%,将与亚马逊开发智能汽车数据平台|美股异动 | US
- 不负众望|12小时卖了30万部!Redmi Note9不负众望,卢伟冰开心了?
- 表达|重磅!2021世界安防博览会官方宣贯会正式召开,百余家企业表达参展意愿
- iPhone|折叠屏iPhone要来?曝苹果开始测试|OPPO Reno5真机曝光
- 承受|折叠屏iPhone已开始测试?要求能承受10万次折叠,或在2年后发布
- 报名啦!宿迁开展第五届“十大科技之星”评选
- 开发自|不妥协不追随 Member’s Mark升级背后的“山姆哲学”
- 正确|新昌消防丨听说,这才是微信新表情的正确打开方式
- 优化|微软亚洲研究院发布开源平台“群策 MARO” 用于多智能体资源调度优化