python开发之HighGUI上位机开发(二)( 三 )

展示效果:
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展示效果:
python开发之HighGUI上位机开发(二)文章插图
实例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展示效果:
python开发之HighGUI上位机开发(二)文章插图
按键组件主要理解如何使用HighGUI实现按键功能 。
按键组件的潜规则OpenCV里面的按键组件其实不存在的, 有两种方式可以实现按键效果:

  • 第一种就是键盘事件监听(waitKey), 这一种可以算是实体按键.
  • 另外一种是改造滑动条组件(Trackbar)变成按键.
Trackbar有两个取值0(逻辑假,按键未按下)跟1(逻辑真,按键按下).
演示代码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展示效果
python开发之HighGUI上位机开发(二)文章插图
鼠标事件监听主要理解如何使用HighGUI进行鼠标事件监听 , 介绍了都有哪些鼠标事件及其用法 。
python开发之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