Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.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 基于OpenCV的目标跟踪_Python_Opencv - Fatal编程技术网

Python 基于OpenCV的目标跟踪

Python 基于OpenCV的目标跟踪,python,opencv,Python,Opencv,我有一个视频剪辑,鱼在水槽里游泳,小颗粒漂浮在水面上。因此,移动的物体是游动的鱼和数百个粒子。这是网站的链接 我的兴趣是在每个帧中正确定位鱼 目前,我的程序如下: 通过将RGB转换为HSV颜色空间,消除每个帧中的光反射(移动噪声) 应用背景减法cv2.BackgroundSubtractorMOG 使用“侵蚀”和“膨胀”去除大部分移动粒子噪声 在二值图像中找到所有斑点的轮廓,并计算所有斑点的旋转边界框 计算所有旋转边界框的纵横比 使用简单的条件识别前景帧中的鱼:如果一个blob占用超过1个像素,

我有一个视频剪辑,鱼在水槽里游泳,小颗粒漂浮在水面上。因此,移动的物体是游动的鱼和数百个粒子。这是网站的链接

我的兴趣是在每个帧中正确定位鱼

目前,我的程序如下:

  • 通过将RGB转换为HSV颜色空间,消除每个帧中的光反射(移动噪声)
  • 应用背景减法
    cv2.BackgroundSubtractorMOG
  • 使用“侵蚀”和“膨胀”去除大部分移动粒子噪声
  • 在二值图像中找到所有斑点的轮廓,并计算所有斑点的旋转边界框
  • 计算所有旋转边界框的纵横比
  • 使用简单的条件识别前景帧中的鱼:如果一个blob占用超过1个像素,则检查其旋转边界框的纵横比。如果长宽比最大,则被视为鱼
  • 我的问题是:

  • 在前10帧中,移动的鱼没有被cv2识别。BackgroundSubtractorMOG,我调整了
    历史
    nmixture
    ,在函数中,它似乎在前10帧中工作不好如何在前几帧中拾取移动的对象?
  • 在某些帧中,
    cv2.BackgroundSubtractorMOG
    可以拾取鱼的模糊轮廓,如下图中的红色圆圈所示:是否有任何方法填充该斑点轮廓并将其识别为鱼?
  • 这里是的链接


    谢谢大家!

    假设鱼只沿着这个方向(或相反方向)游动,您可以尝试使用自定义形态学操作来帮助生长拉长的对象。它至少应该增加斑点的大小,从而为MoG模型提供更多的数据进行跟踪。

    假设鱼只沿着这个方向(或相反方向)游动,您可以尝试使用自定义形态学操作来帮助生长细长的对象。它应该至少增加blob的大小,从而为MoG模型提供更多数据进行跟踪。

    在前几帧中使用直接帧差阈值:cv::absdiff(frame1,frame2)>T或更好(absdiff(frame1,frame2)>T)&(absdiff(ftame2,frame3)>T)使用直接帧差阈值:cv::absdiff(frame1,frame2)>前几帧中的T或更好(absdiff(frame1,frame2)>T)&(absdiff(ftame2,frame3)>T)非常感谢!是的,大多数时候,鱼逆着粒子的运动方向游。您的建议是在应用MOG之前拉长所有对象?你对拉长物体的形态内核有什么建议吗?即使是膨胀后的侵蚀也会将这些斑点的一部分连接起来。不过,您必须对内核进行实验。我最近没有试过,所以很难给出直接的建议。非常感谢!是的,大多数时候,鱼逆着粒子的运动方向游。您的建议是在应用MOG之前拉长所有对象?你对拉长物体的形态内核有什么建议吗?即使是膨胀后的侵蚀也会将这些斑点的一部分连接起来。不过,您必须对内核进行实验。我最近没有试过,所以很难给出直接的建议。