Python 基于OpenCV的目标跟踪
我有一个视频剪辑,鱼在水槽里游泳,小颗粒漂浮在水面上。因此,移动的物体是游动的鱼和数百个粒子。这是网站的链接 我的兴趣是在每个帧中正确定位鱼 目前,我的程序如下:Python 基于OpenCV的目标跟踪,python,opencv,Python,Opencv,我有一个视频剪辑,鱼在水槽里游泳,小颗粒漂浮在水面上。因此,移动的物体是游动的鱼和数百个粒子。这是网站的链接 我的兴趣是在每个帧中正确定位鱼 目前,我的程序如下: 通过将RGB转换为HSV颜色空间,消除每个帧中的光反射(移动噪声) 应用背景减法cv2.BackgroundSubtractorMOG 使用“侵蚀”和“膨胀”去除大部分移动粒子噪声 在二值图像中找到所有斑点的轮廓,并计算所有斑点的旋转边界框 计算所有旋转边界框的纵横比 使用简单的条件识别前景帧中的鱼:如果一个blob占用超过1个像素,
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之前拉长所有对象?你对拉长物体的形态内核有什么建议吗?即使是膨胀后的侵蚀也会将这些斑点的一部分连接起来。不过,您必须对内核进行实验。我最近没有试过,所以很难给出直接的建议。