python开发之HighGUI上位机开发(二)
继上一篇博文:python开发之HighGUI上位机开发(一)
这篇博文主要分析HighGUI上位机开发过程中的一些项目实战开发的重点函数分析 。 主要包括:键盘事件监听、窗口销毁、窗口显示图像、滑动条组件、按键组件以及鼠标事件监听 。。 字数可能有点多 , 请慢慢学习查看 , 相信你肯定会有所收获
作者:ywsydwsbn博客主页:时间:2020-08-25 20:48字数:10914简介:先点赞再看 , 养成习惯!!!
python开发之HighGUI上位机开发(二)
- 键盘事件监听
- waitKey函数API讲解
- demo例子:waitkey_demo.py
- 窗口销毁
- 销毁窗口API讲解
- 关闭单个窗口的样例
- 关闭所有窗口的样例
- 综合实验-窗口显示图像
- 综合实验1 - 单个窗口展示图像
- 综合实验2 - 同时展示多个窗口
- 滑动条组件
- 创建滑动条
- 设置滑动条的位置
- 获取滑动条的位置
- 实例1-单个Trackbar
- 实例2-设定trackbar的默认取值
- 实例3-获取多个Trackbar的Pos
- 按键组件
- 按键组件的潜规则
- 演示代码
- 展示效果
- 鼠标事件监听
- 鼠标事件分类
- 鼠标事件列表(event list)
- 鼠标事件的回调参数
键盘监听事件如下:
文章插图
waitKey函数API讲解讲一下opencv中一个键盘事件监听函数waitKey
cv2.waitKey(delay_ms)1
这个函数其实有两个功能:- 等待一个按键事件的发生
- 延时delay_ms个毫秒
注意,这个函数只有在当前至少有一个窗口是激活状态下 ,才会生效
换句话说:
- 如果你在这期间 ,点开了另外一个无关窗口 ,无论你怎么按键都不会响应 。
- 如果等待设置为0, 就意味着永久等待 ,直到有任意一个按键按下 。
cv2.waitKey(0)1
- waitKey 返回的数值 是按下的按键字符 , 对应的ASCII编码 。
key_num = cv2.waitKey(0)1
- 如果是等待有限时间例如 , 如果等待1000ms 也就是1s之后 ,没有按键按下 ,那么返回的这个值就是-1
key_num = cv2.waitKey(1000)1
我们在进行按键字符匹配的时候 ,一般不会直接比对字符数值 。你可以使用python的强制类型转换 ,将数值转换为字符串chr(value)
例如:我们判断 ,按键是否是k键的时候 ,判断可以这么写:
key_num = cv2.waitKey(0)if chr(key_num) == 'k':print("k pressed...")1234
或者 , 你可以这么写我们利用函数ord(char) ,可以将字符 , 转换为对应ASCII编码的数值:
key_num = cv2.waitKey(0)if key_num == ord('k'):print("k pressed...")1234
demo例子:waitkey_demo.pyimport cv2# 创建一个窗口cv2.namedWindow('image')while True:# 等待按键事件发生key_code = cv2.waitKey(1000)if key_code != -1:print('key {} pressed!!! value=http://kandian.youth.cn/index/{}'.format(chr(key_code), key_code))if chr(key_code) == 'q':# 退出程序print('Quit')breakelse:# 没有按键按下print('no key pressed , wait 1s')cv2.destroyWindow('image')1234567891011121314151617181920
窗口销毁讲解如何销毁窗口销毁窗口API讲解销毁所有窗口:
cv2.destroyAllWindows()1
销毁单个窗口, 传入要销毁的窗口名称:cv2.destroyWindow(window_name)1
关闭单个窗口的样例等待任意按键按下 , 然后关闭特定的窗口import cv2# 创建一个窗口cv2.namedWindow('image')# 等待键盘按键按下cv2.waitKey(0)# 销毁窗口cv2.destroyWindow('image')12345678910
思考题: 如果我不加cv2.destroyWindow会怎么样 ,如果意外中断程序 , 窗口会怎么样?文章插图
关闭所有窗口的样例
import cv2# 创建一个窗口cv2.namedWindow('image1')cv2.namedWindow('image2')cv2.namedWindow('image3')# 等待键盘按键按下cv2.waitKey(0)# 销毁所有窗口cv2.destroyAllWindows()1234567891011
文章插图
会产生三个image窗口 , 按下任意键后 , 三个窗口同时销毁 。。。
综合实验-窗口显示图像讲解了如何使用HighGUI显示单张图片 , 以及在多个窗口上显示图片
- 信息|澜湄合作机制开通水资源合作信息共享平台
- 黑莓(BB.US)盘前涨逾32%,将与亚马逊开发智能汽车数据平台|美股异动 | US
- 不负众望|12小时卖了30万部!Redmi Note9不负众望,卢伟冰开心了?
- 表达|重磅!2021世界安防博览会官方宣贯会正式召开,百余家企业表达参展意愿
- iPhone|折叠屏iPhone要来?曝苹果开始测试|OPPO Reno5真机曝光
- 承受|折叠屏iPhone已开始测试?要求能承受10万次折叠,或在2年后发布
- 报名啦!宿迁开展第五届“十大科技之星”评选
- 开发自|不妥协不追随 Member’s Mark升级背后的“山姆哲学”
- 正确|新昌消防丨听说,这才是微信新表情的正确打开方式
- 优化|微软亚洲研究院发布开源平台“群策 MARO” 用于多智能体资源调度优化