MVision
MVision copied to clipboard
如何读取视频流的时候获取当前数据包所属的特定区域?
您好,我目前想做一些关于ROI的视频传输的系统,但是在实现上需要一些理论支持!
在读取视频流的时候,判读取的视频数据包是不是属于圈定出来的ROI区域,然后再做后续处理!不知道openCV是否有解决办法,或者其他工具是否支持!
具体的一个用途,举个例子就是:当在视频传输过程中,如果需要主动丢包,我会优先丢弃非ROI区域,但是在读取视频数据包的时候,我怎么知道这些数据包里哪一部分是指代ROI区域呢?
或者最简单的是,我人为圈定中心20X20的区域,我在读取数据包的时候如何知道该数据包是否是20*20的区域呢?
也许我的方向就是错的,所以有其他实现此种思路的方案吗?
你的ROI是一个20*20的图像吗?
- 如果是图像的话。
a. 传统的方法应该就是对视频中的每一帧进行滑动窗口匹配, 匹配度反映视频帧的数据有效性,选择匹配度低的帧进行剔除。 这个opencv应该可以做。
b. 深度学习的方式应该就是实现使用你的ROI图像训练一个目标检测器, 然后对每一帧进行目标检测,如果检测到ROI区域的类别,则保留该帧,否则剔除。 这个 如果不想用深度学习框架实习的话, opencv 中的级联分类检测器 应该也可以做。
- 如果ROI是一小段视频的话,我觉的可以考虑采用视频行为识别的方式。
感谢您提供的解答!
后期应该是处理视频流,关于视频行为识别等图像处理技术目前应该都有解决方案,我困惑的是如何在识别后,当我读取视频流的时候能判断当前数据块是视频对应的区域,从而做进一步的处理。
目前我所了解的大部分是处理完后再图像上作出标记,以供人眼识别,那么这些标记反映到底层数据包该怎么识别呢?
您在“1”中提到的滑动窗口匹配应该是一种解决办法,但是对于动态视频来说,如果我只关注人脸区域,然后每一帧都做人脸的数据包匹配应该计算量很大很复杂吧!
至于您说的目标检测器应该是针对帧图像来做的,而我想要一帧图像中的特定区域,我需要识别出特定区域的在该帧中代表数据包,不知道是否有更成熟的方案或者工具可以实现?
你的意思是,在传输视频流时,不仅要剔除信息量少的帧,而且在传输包含想要的ROI的帧时,也不是传输这一帧的全部内容,而是只传输检测出来的包含ROI的部分? 要是这样的话,需要把检测出来的2D框单独提取出来(OPENCV就很好实现)作为一个新的图像,再进行传输。
不完全是这样,ROI区域要100%传输,非ROI区域并不是不传输,而是选择性传输,也就是说当我检测到该数据包属于ROI区域时,我必须传输!但是非ROI区域则会选择性丢弃一些!所以不能直接把ROI提取出来生成新的文件传输,那样非ROI区域的数据就都丢失了!
您好!我也遇到了类似的问题,不过打算用视频行为识别的方法做,窗口自己定,但是实时性要求比较高,请问有什么框架识别的速度比较快呢?感谢!