如何在使用opencv+python的手势识别直播视频流上显示文字

How to display text on live video stream of hand gesture recognition using opencv+python

我正在使用 raspberry pi3,我已经使用 OpenCV 和 python 编写了手部识别代码。但是现在我想在它的实时视频流屏幕上打印像 "left to right" 这样的文本,当手从左向右移动时,打印像 "right to left" 这样的文本,当手从右向左移动时。

现在我的问题是使用 cv2.putText() 我们可以显示文本,但我如何找到手从左向右移动或反之亦然的方向?

有人知道如何显示这段文字吗?请回复。提前致谢。

如果我没理解错的话,您已经认出了手(感兴趣区域又名 ROI)并且只是想知道如何知道它是向左还是向右移动。为了识别这一点,您应该保留其位置的一些历史记录。只需记住手所在的几帧。

import numpy as np
from collections import deque

cx_hist = deque(maxlen=10) # how many frames history
while True:
    ...
    M = cv2.moments(contour) # the moment of one contour
    cx = int(M['m10']/M['m00']) # the x coordinate of the centroid

    cx_hist.append(cx)
    diff = [cx_hist[i+1]-cx_hist[i] for i in range(len(cx_hist)-1)]

    treshold = 2 # some treshold of significant (pixel) movement
    if np.mean(diff) > treshold:
        print('positive means movement to the right')
    elif np.mean(diff) < treshold*-1:
        print('negative means movement to the left')
    else:
        print('below the tresholds there is little movement')

您必须自己将其转换为puttext。我使用了质心坐标,但您可以选择其他坐标。参见 http://docs.opencv.org/3.1.0/dd/d49/tutorial_py_contour_features.html