Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在视频中跟踪对象的最佳方式是什么?_Python_Opencv_Computer Vision - Fatal编程技术网

Python 在视频中跟踪对象的最佳方式是什么?

Python 在视频中跟踪对象的最佳方式是什么?,python,opencv,computer-vision,Python,Opencv,Computer Vision,我试图学习计算机视觉,更具体地说,是用python打开cv 我想做一个程序,将跟踪我的杠铃在一个视频,并告诉我它的路径。(我知道这样的应用程序存在,但我想自己制作)。我试着使用Canny边缘检测和HoughCircles函数,但我似乎得到了一切,但没有一个好的结果 我一直在使用此代码查找图像的边缘: gray = cv.cvtColor(src=img, code=cv.COLOR_BGR2GRAY) blur = cv.blur(gray, (2,2)) canny = cv.Canny(bl

我试图学习计算机视觉,更具体地说,是用python打开cv

我想做一个程序,将跟踪我的杠铃在一个视频,并告诉我它的路径。(我知道这样的应用程序存在,但我想自己制作)。我试着使用Canny边缘检测和HoughCircles函数,但我似乎得到了一切,但没有一个好的结果

我一直在使用此代码查找图像的边缘:

gray = cv.cvtColor(src=img, code=cv.COLOR_BGR2GRAY)
blur = cv.blur(gray, (2,2))
canny = cv.Canny(blur, 60, 60)
然后使用以下代码查找圆:

circles = cv.HoughCircles(canny, cv.HOUGH_GRADIENT, dp=2, minDist=1000, circles=None,maxRadius=50)
结果是:

左=检测到圆的原始图像//右=canny图像


这是正确的方法还是应该使用其他方法?

训练杠铃的YOLO模型以检测杠铃对象比使用OpenCV尝试的任何方法都要好。你至少需要500张图片。这些图片可以很容易地在互联网上找到。是关于YOLO的启动教程。让我们试一试。

如果您调整HoughCircles的参数,它可能会识别杠铃[编辑:但需要更多的预处理、伽马校正、模糊等,所以最好不要这样做],但是OpenCV有许多用于此类对象跟踪的算法-只需首先指定图像中的一个区域(如果可以的话)

在你的例子中,对象总是可见的,变化不大,所以我想很多可用的算法都可以很好地工作

OpenCV具有用于选择的内置功能:

initBB=cv2。选择ROI(“帧”,帧,fromCenter=False,showcroshair=True)

有关跟踪,请参见本教程:

作者建议的总结如下:

CSRT跟踪器:区分相关滤波器(具有信道和空间可靠性)。倾向于比KCF更精确,但稍慢。(最低开放度3.4.2)

当您需要更高的对象跟踪精度并且可以容忍较慢的FPS吞吐量时,请使用CSRT

我想准确度是你想要的,如果是离线使用的话


你能分享一个视频样本吗?

你到底有什么问题?你为什么跟踪杠铃?您需要语义分割还是正常检测?这些都是重要的问题。Canny是一种非常基本的方法,它需要一个非常稳定的背景来使用它。这就是为什么有深度学习来处理这类问题如果我们需要谈论深度学习,你可以使用MaskRCNN、yolvoV4等。有很多可用的解决方案。

看看演示,我认为它可以工作。我将在明天的视频中更深入地探讨这个问题,但这将是我想要处理的那种镜头。静态侧视图()顺便说一句,有了像绿色那样的彩色磁盘,也可以通过颜色进行更简单的跟踪:通常通过转换到HSV颜色空间,如果在视频中,我还可以提高对比度。颜色跟踪+在找到磁盘后,可能会找到指针并计算其中心。新视频中关于准确性的一个问题是视差——摄像机很近,并且条的顶部以不同的角度出现。我不知道这会对追踪箱造成什么影响。无论如何,必须计算一些最低点或方框中心。此外,精确的识别可能需要两次(如果这些方法不能提供足够的准确度),有时可以进行逐像素检查,如下所示:(不是英文,但请参阅下面的github链接或屏幕广播中显示的代码):或通过应用numpy mask并在彩色磁盘区域内搜索灰色像素。然后查找孔并找到其中心和/或最低点(最后一个视频)。