如何在我的 OpenCV iOS 应用程序中捆绑/存储应用程序图像数据?

Posted

技术标签:

【中文标题】如何在我的 OpenCV iOS 应用程序中捆绑/存储应用程序图像数据?【英文标题】:How to bundle/store application image data in my OpenCV iOS application? 【发布时间】:2015-07-03 04:50:05 【问题描述】:

我是 Xcode 和 ios 开发的新手,我有一个基本问题是关于如何存储(捆绑)由我的应用程序所需的图像组成的应用程序数据。我的应用程序需要一个小型图像数据库作为我提供的输入。

我有一个 C++ 中的 Xcode 项目,它使用当前在我的 Mac 上正确编译和运行的 OpenCV。我 Mac 上的应用程序只是从我可以轻松指向的文件系统上的文件夹中读取它需要的图像数据。我正在尝试使用 Objective-C 或 Swift 将此应用程序移植到 iOS。我能够编写一些基本的 Objective-C 代码作为我的 C++/OpenCV 应用程序的包装器,但我现在需要访问 iOS 文件系统来读取图像并且我不确定在哪里可以找到该数据以及如何配置我的 Xcode 项目以包含它。

在阅读了一些关于这个主题的文章后,我发现在 iOS 中有几种存储数据的方法,但我不确定哪种方法是合适的并且相对容易实现。我的理解是,我的应用程序的所有数据都需要存在于应用程序沙箱中。我看到很多关于如何获取沙箱中各种文件夹的文件路径的示例,但我不清楚如何实际配置我的项目以包含数据(即,我将图像放在哪里?)。我需要在我的 Xcode 项目中配置什么,以便在我编译应用程序时它知道我的数据吗?

我发现了很多关于 iOS 文件系统、核心数据、归档数据等的帖子……但是很难找到有关如何使用我提供的数据实际配置我的项目的任何信息。任何帮助将不胜感激。

谢谢!

【问题讨论】:

你还在纠结这个吗?让我知道,我可以解释你的选择。 是的,请告诉我您的想法。谢谢约翰。 【参考方案1】:

如果您提供的图像在应用程序中是固定的(即不随时间变化),那么您只需将图像添加到应用程序本身。它们存储在 app bundle 中,可以按如下方式访问(带有示例名称);

    let imagePath = NSBundle.mainBundle().pathForResource("myImage", ofType:"jpg")  
    let splashImageURL = NSURL.fileURLWithPath(imagePath!)
    anImage = NSImage(contentsOfURL:splashImageURL)

您可以在项目中创建一个文件夹来保存图像。这个在最终的图片路径中没有用到,只是为了项目方便。您可以使用“文件”菜单或将图像文件直接拖放到项目中。确保选中“复制文件”选项以将图像从源位置移动到项目本身。

【讨论】:

以上是关于如何在我的 OpenCV iOS 应用程序中捆绑/存储应用程序图像数据?的主要内容,如果未能解决你的问题,请参考以下文章

自定义捆绑在 iOS 框架文件中的故事板

如何将 openCV 导入 iOS 8 项目

无法在 iOS 中与 iPodMusicPlayer 捆绑播放歌曲

获得批准后,我可以在我的应用中更改捆绑标识符吗?

在 iOS 中找不到 opencv 框架

如何获取从应用商店和 iTunes 连接中删除的 iOS 应用捆绑 ID?