【发布时间】:2014-06-03 23:13:52
【问题描述】:
opencv 或任何其他框架中的一种新功能,我有一个来自静态摄像机的视频,我想从中创建全景图像。 我确实尝试将视频分割成帧,然后将所有帧拼接在一起,但速度太慢了。 还有其他解决方案吗?
【问题讨论】:
标签: opencv opencvdotnet opencv-stitching boofcv
opencv 或任何其他框架中的一种新功能,我有一个来自静态摄像机的视频,我想从中创建全景图像。 我确实尝试将视频分割成帧,然后将所有帧拼接在一起,但速度太慢了。 还有其他解决方案吗?
【问题讨论】:
标签: opencv opencvdotnet opencv-stitching boofcv
OpenCV 中没有开箱即用的解决方案。
为了加快速度,您可以只拍摄每第 n 帧,并希望摄像师不要移动得太快。
您可以尝试深入了解stitching pieline。我不知道您的视频,但您可以执行以下操作:
如果您的视频中经常出现带有静止摄像头的部分,请尝试检查是否有移动。如果没有运动,你就不必缝合。要快速检测运动,请使用缩小版的帧,或仅帧的一个区域并匹配这些。
如果您知道移动的方向,您可以尝试剪下图像的一部分。因此,如果相机向右移动,您可以剪切最左边的部分并仍然缝合,因为帧与帧之间的视频信息变化应该很小。
tl;dr 没有简单的方法,深入研究拼接管道并根据您的源材料定制算法以获得加速
【讨论】:
您可以通过使用 resize() 函数向下插值帧来将视频分割成小图像,并且一旦您拥有拼接的总图像,您就可以按相同的比例对其进行插值。
resize(input /* input image*/, result /*result image */, result.size()/*new dimensions*/, 0, 0, INTER_CUBIC/* interpolation method*/);
想了解更多插值方法,可以查看这个文档http://docs.opencv.org/modules/imgproc/doc/geometric_transformations.html#resize
您甚至可以定义图像的一个区域来检测相应的关键点
【讨论】: