Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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
Opencv 使用掩码作为输入进行跟踪_Opencv_Image Processing_Machine Learning_Opencv Python - Fatal编程技术网

Opencv 使用掩码作为输入进行跟踪

Opencv 使用掩码作为输入进行跟踪,opencv,image-processing,machine-learning,opencv-python,Opencv,Image Processing,Machine Learning,Opencv Python,我目前正在使用一个基于CNN的对象检测模块,该模块为我提供对象,然后我使用OpenCV作为跟踪输入。到目前为止,对象检测模块都是生成矩形的,但是我想转换到一个分割模块,比如为每个对象输出遮罩和矩形。遮罩是对象更精确的表示形式。OpenCV中的所有跟踪器都以矩形作为输入。有没有办法使用遮罩而不是盒子来跟踪对象。如果有助于跟踪对象,我可以将遮罩转换为轮廓 活动轮廓可以使用轮廓作为输入进行跟踪 因此,您可以使用cnn模型中的轮廓初始化第一帧,在后续帧中,您不需要调用昂贵的forward,但可以基于此模

我目前正在使用一个基于CNN的对象检测模块,该模块为我提供对象,然后我使用OpenCV作为跟踪输入。到目前为止,对象检测模块都是生成矩形的,但是我想转换到一个分割模块,比如为每个对象输出遮罩和矩形。遮罩是对象更精确的表示形式。OpenCV中的所有跟踪器都以矩形作为输入。有没有办法使用遮罩而不是盒子来跟踪对象。如果有助于跟踪对象,我可以将遮罩转换为轮廓

活动轮廓可以使用轮廓作为输入进行跟踪


因此,您可以使用cnn模型中的轮廓初始化第一帧,在后续帧中,您不需要调用昂贵的forward,但可以基于此模型将轮廓更新为新的轮廓。

抱歉,OpenCV中没有针对活动轮廓模型的内置开箱即用解决方案

该分割模型广泛应用于计算机视觉问题(由提出)中,是其他基于能量(如,或)的分割模型的起点

因此,尝试在OpenCV上执行活动轮廓分割,有几种解决方案,但我认为您必须了解,以便能够根据应用程序的上下文正确设置参数

这里有一个很好的实现(有点模糊)

以及其他实施,这可以帮助您在理论和实施之间建立联系:

我的忠告是:

  • 阅读原始文件以了解参数
  • 在Matlab上测试一些例子,用参数和结果来播放一些
  • 使用此处链接的OpenCV测试一些实现
  • 为您的问题上下文确定最佳参数并进行测试

  • 考虑用你的结果为OpenCV做出贡献。

    afaik在OpenCV中跟踪时没有内置的使用掩码的方法,但是代码是开源的,所以你可以对其进行调整。@Mika但是大多数方法都以矩形作为输入,只以x、y和w、h作为输出。你能解释一下我需要更改哪些部分吗?不,y抱歉,您必须自己理解代码,这在很大程度上取决于特定的跟踪方法。例如:在其中一种跟踪机制中,级联分类器是动态训练的。您可能可以在创建训练数据时使用掩码将对象与背景分离,并引入额外的随机/di不同的背景使得训练更好,跟踪更稳健。