本篇文章主要介绍使用cv2来实现手势的动态识别。
下面是示例代码:
import cv2
import numpy as np
capture = cv2.VideoCapture(0)
while capture.isOpened():
ret, frame = capture.read()
cv2.imshow("frame", frame)
# 中值滤波,去除椒盐噪声
dst = cv2.medianBlur(frame, 5)
# 转换到HSV颜色空间
dst_hsv = cv2.cvtColor(dst, cv2.COLOR_RGB2HSV)
# 对HSV空间进行量化,得到2值图像,亮的部分为手的形状
dst_temp1 = cv2.inRange(dst_hsv, (0, 30, 30), (40, 170, 256))
dst_temp2 = cv2.inRange(dst_hsv, (156, 30, 30), (180, 170, 256))
mask = np.array([frame.shape[1], frame.shape[0]])
mode = cv2.bitwise_or(dst_temp1, dst_temp2, mask)
# 形态学操作,去除噪声,并使手的边界更加清晰
d = cv2.erode(mode, (3, 3))
d = cv2.morphologyEx(d, cv2.MORPH_OPEN, (3, 3))
d = cv2.dilate(d, (3, 3))
d = cv2.morphologyEx(d, cv2.MORPH_