13

在 iOS 中有很多方法和库可以显示全景图片,虽然内置相机中有全景功能,但无法在应用程序中使用它。

有没有我可以用来捕捉全景图像的库?

谢谢!

4

1 回答 1

35

这些人可能会向您出售 C++ 库的许可证。他们的代码进入了 App Store 中出色的 Autostich 应用程序。

Autostitch 基于 SIFT 图像特征检测。openCv c++ 库中提供了 SIFT 和许多其他技术。该站点提供了一个预构建的 iOS 框架。

更新

OpenCV 有一个Stitcher包含大量文档的类...

OpenCV 拼接管道

OpenCV 缝合器类

“高级图像拼接器。可以在不了解整个拼接流水线的情况下使用该类。但是,为了能够获得更高的拼接稳定性和最终图像的质量,至少建议熟悉该理论(参见Stitching pipline )。”

更新 2

如果您以前没有使用过 openCV,第一个障碍是编译该库并将其安装到您的项目中。可能很棘手,请在此处查看我的问题和答案(安装并运行 openCV)和此处(如何将 c++ 代码与 Objective-c 分开的示例,以及示例 github 项目)。

当您使用 openCV 时,这应该是开始查询的最快方法:

Stitcher::stitch(InputArray images, OutputArray pano)

参数:
images - 输入图像。
pano – 最后的全景。

然后加快速度 - 如果你有它们 - 提供感兴趣的区域 rects(指示照片重叠​​的位置)

Stitcher::stitch(InputArray images, const std::vector<std::vector<Rect>>& rois, OutputArray pano)  

您可以深入研究拼接管道以优化该过程的许多细节,但这应该足以让您入门。

如果您查看 openCV 发行版的 samples/cpp 文件夹,您将看到几个拼接示例,stitching.cpp 以及stitching_detailed.cpp.

为了提供输入图像,您需要连接相机并设计一个体面的用户界面来帮助用户拍摄正确类型的照片(例如,具有良好的重叠)。

如果您想查看使用 openCV 的现有项目,这里有一个声称可以做您所追求的 android 的项目 - 不同的平台,但原理是相同的(使用 java 接口进入相同的库)。尤其看一下PanoActivity.java

更新 3
我已将一个非常基本的示例上传到 github。我对它的出色工作印象深刻,没有任何优化或调整。它在我的 github 项目中缝合示例照片,几乎与 Autostitch 应用程序一样。

一段时间后更新 4 ......我已经更新了一个新的示例项目,以便与 Swift 和 Cocoapods 一起使用

于 2012-12-28T04:59:29.577 回答