库在iOS 6中捕获全景图

时间:2012-12-28 00:03:30

标签: iphone ios ios6 panoramas

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

我可以使用任何库来捕捉全景图像吗?

谢谢!

1 个答案:

答案 0 :(得分:34)

These people可能会向您出售c ++库的许可证。他们的代码进入了App Store中提供的出色的Autostich应用程序。

自动调整基于SIFT图像特征检测。 openCv c++ library中提供了SIFT和许多其他技术。该站点提供预构建的iOS框架。

更新

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

OpenCV Stitching pipline

OpenCV Stitcher class

  

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

更新2

如果您之前没有使用过openCV,那么第一个障碍是将库编译并安装到您的项目中。可能很棘手,请参阅我的问题和答案here(安装和运行openCV)和here(如何使用示例github项目将c ++代码与objective-c分开)。

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

Stitcher::stitch(InputArray images, OutputArray pano)

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

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

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

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

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

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

如果你想看一个使用openCV的现有项目,here is one for android声称要做你正在做的事情 - 不同的平台,但原则是相同的(使用java接口进入相同的库)。请特别注意PanoActivity.java

更新3
我上传了a very basic sample to github。如果没有任何优化或调整,我会对它的工作表现给我留下深刻的印象。它在我的github项目中缝合样本照片几乎和Autostitch应用程序一样。

更新4 一段时间后...... 我制作了一个新的示例项目updated for use with Swift and Cocoapods