1 opencv方向键取值
===============
1.1 这是一个坑,不能使用方向键:上下左右:↑↓←→。
1.2 Deepin-linux华为笔记本电脑的python的opencv的方向键取值问题,则是一个巨大的坑。
1.3 方向键:(不同的操作系统值不一样)
- 上(↑):?
- 下(↓):?
- 左(←):?
- 右(→):?
2 环境
=====
2.1 Deepin-linux华为笔记本电脑
2.2 python3.8+opencv4.2.0
3 代码1的取值
===========
3.1 代码
import cv2#读取bg图片img = cv2.imread('/home/xgj/Desktop/cv2-keyevent/bg.jpeg',cv2.IMREAD_UNCHANGED)#原图大小显示cv2.imshow('image',img)#常规字母键k = cv2.waitKey(0)#获取del和shfit#k = cv2.waitKeyEx(0)print('key =', k)cv2.destroyAllWindows()
3.2 w s a d字母按键取值
#k = cv2.waitKey(0) 和k = cv2.waitKeyEx(0)
# 两者的结果是一样的
#w
key = 119
#s
key = 115
#a
key = 97
#d
key = 100
3.3 del键和shift键
k = cv2.waitKeyEx(0)
#del键
key = 65535
#shift键
key = 65506
k = cv2.waitKey(0)
#del键
key = 255
#shift键
key = 226
===取不到方向键:上下左右键===?
4 代码2的取值
===========
4.1 代码2
import cv2#读取图片img = cv2.imread('/home/xgj/Desktop/cv2-keyevent/bg.jpeg',cv2.IMREAD_UNCHANGED)key =0#按esc退出=27while key != 27: cv2.imshow('xxx', img) #常规取值 #key = cv2.waitKey() #取方向键值bug key = cv2.waitKeyEx() # 如果获取的键值小于256则作为ascii码输出对应字符,否则直接输出值 msg = '{} is pressed'.format(chr(key)if key < 256 else key) print(msg) print(key)
4.2 第一次
#第一次取值
R is pressed
T is pressed
Q is pressed
S is pressed
4.3 再次就取不到值
4.4 删除(Delete):65535,可以取值到。
按道理,应该到的值为:
- 上(↑):65362
- 下(↓):65364
- 左(←):65361
- 右(→):65363
可是按键后没反应,那就当然取不到这些值了。
这是why?
4.5 操作图
不能使用方向键:上下左右:↑↓←→。
一个巨大的坑,希望高手指点,谢谢。