【发布时间】:2015-06-03 14:44:05
【问题描述】:
我使用 4 个固定相机。相机不会相对移动。我想将它们中的视频图像实时拼接成一个视频图像。
我用于这个 OpenCV 2.4.10 和 cv:stitcher 类,像这样:
// use 4 video-cameras
cv::VideoCapture cap0(0), cap1(1), cap2(2), cap3(3);
bool try_use_gpu = true; // use GPU
cv::Stitcher stitcher = cv::Stitcher::createDefault(try_use_gpu);
stitcher.setWarper(new cv::CylindricalWarperGpu());
stitcher.setWaveCorrection(false);
stitcher.setSeamEstimationResol(0.001);
stitcher.setPanoConfidenceThresh(0.1);
//stitcher.setSeamFinder(new cv::detail::GraphCutSeamFinder(cv::detail::GraphCutSeamFinderBase::COST_COLOR_GRAD));
stitcher.setSeamFinder(new cv::detail::NoSeamFinder());
stitcher.setBlender(cv::detail::Blender::createDefault(cv::detail::Blender::NO, true));
//stitcher.setExposureCompensator(cv::detail::ExposureCompensator::createDefault(cv::detail::ExposureCompensator::NO));
stitcher.setExposureCompensator(new cv::detail::NoExposureCompensator());
std::vector<cv::Mat> images(4);
cap0 >> images[0];
cap1 >> images[1];
cap2 >> images[2];
cap3 >> images[3];
// call once!
cv::Stitcher::Status status = stitcher.estimateTransform(images);
while(true) {
// **lack of speed, even if I use old frames**
// std::vector<cv::Mat> images(4);
//cap0 >> images[0];
//cap1 >> images[1];
//cap2 >> images[2];
//cap3 >> images[3];
cv::Stitcher::Status status = stitcher.composePanorama(images, pano_result);
}
我只有 10 FPS(每秒帧数),但我需要 25 FPS。 我怎样才能加速这个例子?
当我使用stitcher.setWarper(new cv::PlaneWarperGpu()); 时,我得到一个非常放大的图像,我不需要这个。
我需要只 - 翻译。
例如,我准备不使用了:
- 透视变换
- 规模化运营
- 甚至可能是轮换
我该怎么做?或者我如何从cv::Stitcher stitcher 参数x,y 获得每张图像的翻译?
更新 - 在 Windows 7 x64 上的 MSVS 2013 中进行分析:
【问题讨论】:
-
你用的是什么机器?你启用了tbb吗?另外,能否提供几张图片作为示例拼接在一起?
-
@Antonio 8 GB RAM + CPU(英特尔酷睿 i5 760 - 4 核)+ GPU(nVidia GeForce GTX 970 - 1664 核)。待定禁用。 OpenCV 2.4.10 使用 CUDA 6.5 编译并禁用 OpenMP/TBB。
-
TBB 可能会通过多线程处理来提供帮助...您为哪个系统构建了哪些构建工具?此外,要尝试的一件快速的事情是将图像数组声明/定义放在 while 循环之外。 (您在每个周期进行分配和解除分配)。我建议您在拼接函数周围设置一些计时器,以检查该函数调用是否是实际瓶颈。
-
@Antonio GCC 4.7.2 + CUDA 6.5 on Linux x86_64 Debian 7 (Wheezy)。 已修复:我将图像数组声明/定义置于 while 循环之外。
-
@Antonio 不,速度不够,即使我在每次迭代中都使用旧帧。我使用 640x480 RGB 帧。我在 Windows 上添加了来自 MSVS 2013 的分析信息。
标签: c++ opencv image-stitching opencv3.0 opencv-stitching