我正在使用raspberry pi3,我使用OpenCV和python编写了手动识别代码。但是现在我想在其实时视频流屏幕上打印“从左到右”的文字,当手从左向右移动并打印文本时,如“从右到左”,当手从右向左移动时。
现在我的问题是使用cv2.putText()
我们可以显示文字但是如何找到手从左向右移动的方向,反之亦然?
任何人都知道如何显示此文本?请回复。提前谢谢。
答案 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