如何使用opencv + python在手势识别的实时视频流上显示文本

时间:2017-02-21 09:58:16

标签: python opencv raspberry-pi3 gesture-recognition

我正在使用raspberry pi3,我使用OpenCV和python编写了手动识别代码。但是现在我想在其实时视频流屏幕上打印“从左到右”的文字,当手从左向右移动并打印文本时,如“从右到左”,当手从右向左移动时。

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

任何人都知道如何显示此文本?请回复。提前谢谢。

1 个答案:

答案 0 :(得分:4)

如果我理解正确,你已经识别出手(感兴趣区域又称投资回报率),并且想知道如何知道它是向左还是向右移动。为了识别这一点,您应该保留其位置的一些历史记录。只记得那只手的几帧。

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