使用OpenCV和Python获取运动的一般方向

1 投票
1 回答
3724 浏览
提问于 2025-04-16 08:11

我在网上找到了一些代码,地址是如何在Python中使用OpenCV跟踪运动?http://appdelegateinc.com/blog/2010/08/02/motion-tracking-with-a-webcam/,用这些代码我可以很好地用Python和OpenCV来跟踪运动。我稍微改了一下代码,不再在图像上画圆,而是直接打印出检测到的运动的(x,y)坐标。这样做可以很准确地显示运动的“确切”位置,但我想知道运动的大致方向,比如说是向上还是向下。

我有个想法,就是一旦我有了几个点,就用gnuplot把所有的y坐标和点的编号画出来,然后计算出一条最佳拟合线。如果这条线的斜率是正的,那就说明运动是向上的;如果是负的,那就是向下的。

虽然我觉得这个方法可能有效,但感觉有点“hacky”,也就是不太正式。我在想有没有更好的方法,因为我对OpenCV还比较陌生。

1 个回答

0

不,我觉得OpenCV并没有提供这个功能。你现在的做法是对的,通过计算梯度来处理。不过,你可以简单地通过计算两个点(x1, y1)和(x2, y2)之间的关系来得到梯度。使用gnuplot可能会比较复杂。你也可以试试Numdifftools

我还找到了一些关于OpenCV的额外链接,这些在之前的回答中没有提到。

撰写回答