64 lines
1.9 KiB
Python
64 lines
1.9 KiB
Python
'''
|
||
@ Date: 2021-04-21 14:18:50
|
||
@ Author: Qing Shuai
|
||
@ LastEditors: Qing Shuai
|
||
@ LastEditTime: 2022-08-09 19:56:43
|
||
@ FilePath: /EasyMocapPublic/easymocap/annotator/basic_callback.py
|
||
'''
|
||
import cv2
|
||
|
||
class CV_KEY:
|
||
BLANK = 32
|
||
ENTER = 13
|
||
LSHIFT = 225 # Mac上不行
|
||
NONE = 255
|
||
TAB = 9
|
||
q = 113
|
||
ESC = 27
|
||
BACKSPACE = 8
|
||
WINDOW_WIDTH = int(1920*0.8)
|
||
WINDOW_HEIGHT = int(1080*0.8)
|
||
LEFT = ord('a')
|
||
RIGHT = ord('d')
|
||
UP = ord('w')
|
||
DOWN = ord('s')
|
||
MINUS = 45
|
||
PLUS = 61
|
||
|
||
def get_key():
|
||
k = cv2.waitKey(10) & 0xFF
|
||
if k == CV_KEY.LSHIFT:
|
||
key1 = cv2.waitKey(500) & 0xFF
|
||
if key1 == CV_KEY.NONE:
|
||
return key1
|
||
# 转换为大写
|
||
k = key1 - ord('a') + ord('A')
|
||
return k
|
||
|
||
def point_callback(event, x, y, flags, param):
|
||
"""
|
||
OpenCV使用的简单的回调函数,主要实现两个基础功能:
|
||
1. 对于按住拖动的情况,记录起始点与终止点(当前点)
|
||
2. 对于点击的情况,记录选择的点
|
||
3. 记录当前是否按住了键
|
||
"""
|
||
if event not in [cv2.EVENT_LBUTTONDOWN, cv2.EVENT_MOUSEMOVE, cv2.EVENT_LBUTTONUP]:
|
||
return 0
|
||
param['button_down'] = flags == cv2.EVENT_FLAG_LBUTTON
|
||
# 判断出了选择了的点的位置,直接写入这个位置
|
||
if event == cv2.EVENT_LBUTTONDOWN:
|
||
# 如果选中了框,那么在按下的时候,就不能清零
|
||
param['click'] = None
|
||
param['start'] = (x, y)
|
||
param['end'] = (x, y)
|
||
elif event == cv2.EVENT_MOUSEMOVE and flags == cv2.EVENT_FLAG_LBUTTON:
|
||
param['end'] = (x, y)
|
||
elif event == cv2.EVENT_LBUTTONUP:
|
||
if x == param['start'][0] and y == param['start'][1]:
|
||
param['click'] = param['start']
|
||
param['start'] = None
|
||
param['end'] = None
|
||
else:
|
||
param['click'] = None
|
||
return 1
|