MVision icon indicating copy to clipboard operation
MVision copied to clipboard

如何读取视频流的时候获取当前数据包所属的特定区域?

Open foreverneverer opened this issue 5 years ago • 5 comments

您好,我目前想做一些关于ROI的视频传输的系统,但是在实现上需要一些理论支持!

在读取视频流的时候,判读取的视频数据包是不是属于圈定出来的ROI区域,然后再做后续处理!不知道openCV是否有解决办法,或者其他工具是否支持!

具体的一个用途,举个例子就是:当在视频传输过程中,如果需要主动丢包,我会优先丢弃非ROI区域,但是在读取视频数据包的时候,我怎么知道这些数据包里哪一部分是指代ROI区域呢?

或者最简单的是,我人为圈定中心20X20的区域,我在读取数据包的时候如何知道该数据包是否是20*20的区域呢?

也许我的方向就是错的,所以有其他实现此种思路的方案吗?

foreverneverer avatar Dec 09 '18 15:12 foreverneverer

你的ROI是一个20*20的图像吗?

  1. 如果是图像的话。

a. 传统的方法应该就是对视频中的每一帧进行滑动窗口匹配, 匹配度反映视频帧的数据有效性,选择匹配度低的帧进行剔除。 这个opencv应该可以做。

b. 深度学习的方式应该就是实现使用你的ROI图像训练一个目标检测器, 然后对每一帧进行目标检测,如果检测到ROI区域的类别,则保留该帧,否则剔除。 这个 如果不想用深度学习框架实习的话, opencv 中的级联分类检测器 应该也可以做。

  1. 如果ROI是一小段视频的话,我觉的可以考虑采用视频行为识别的方式。

Ewenwan avatar Dec 10 '18 04:12 Ewenwan

感谢您提供的解答!

后期应该是处理视频流,关于视频行为识别等图像处理技术目前应该都有解决方案,我困惑的是如何在识别后,当我读取视频流的时候能判断当前数据块是视频对应的区域,从而做进一步的处理。

目前我所了解的大部分是处理完后再图像上作出标记,以供人眼识别,那么这些标记反映到底层数据包该怎么识别呢?

您在“1”中提到的滑动窗口匹配应该是一种解决办法,但是对于动态视频来说,如果我只关注人脸区域,然后每一帧都做人脸的数据包匹配应该计算量很大很复杂吧!

至于您说的目标检测器应该是针对帧图像来做的,而我想要一帧图像中的特定区域,我需要识别出特定区域的在该帧中代表数据包,不知道是否有更成熟的方案或者工具可以实现?

foreverneverer avatar Dec 10 '18 06:12 foreverneverer

你的意思是,在传输视频流时,不仅要剔除信息量少的帧,而且在传输包含想要的ROI的帧时,也不是传输这一帧的全部内容,而是只传输检测出来的包含ROI的部分? 要是这样的话,需要把检测出来的2D框单独提取出来(OPENCV就很好实现)作为一个新的图像,再进行传输。

Ewenwan avatar Dec 10 '18 07:12 Ewenwan

不完全是这样,ROI区域要100%传输,非ROI区域并不是不传输,而是选择性传输,也就是说当我检测到该数据包属于ROI区域时,我必须传输!但是非ROI区域则会选择性丢弃一些!所以不能直接把ROI提取出来生成新的文件传输,那样非ROI区域的数据就都丢失了!

foreverneverer avatar Dec 10 '18 08:12 foreverneverer

您好!我也遇到了类似的问题,不过打算用视频行为识别的方法做,窗口自己定,但是实时性要求比较高,请问有什么框架识别的速度比较快呢?感谢!

weitianli avatar Feb 02 '19 06:02 weitianli