如何在 iOS 工程中使用 OpenCV

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在 iOS 工程中使用 OpenCV相关的知识,希望对你有一定的参考价值。

参考技术A

首先说明,为何在 PCH 文件中引入 OpenCV 的头文件我们需要多加#ifdef __cpluseplus这一部分呢?这是因为 PCH 文件是一个会被所有的文件引入的头文件,而我们又希望 #import <opencv2/opencv.hpp>这部分只会被一些 C++实现文件编译,所以我们加上#ifdef __cpluseplus来表示这是 C++ 文件才会编译的,除了#ifdef __cpluseplus,还有#ifdef __OBJC__这样的宏来说明编译规则(按照 OC 文件编译),这样的宏多出现于一些会被多种类型的实现文件引用的头文件中。

另外注意另一个问题:如果一个头文件是C++类型的头文件,那么一定要保证所有直接或者间接引用这个头文件的实现文件都要为.mm或者.cpp,否则 Xcode 就不会把这个头文件当做 C++头文件来编译,就会出现最基本的#include <iostream>这种引用都会报出file not found 这样的编译错误的问题。我在编译的过程中,某个C++头文件 A.h 被 B.h 引用,然后 B.h 又被 C.m 引用,虽然 B 的实现文件是 B.mm ,但是仍然报出了之前说的那个错误, 感谢 StackOberflow 让我找到了问题发生的原因。所以对于 C++ 头文件的引用一定要注意,但凡是引用了 A.h 的实现部分,都必须是.mm或者.cpp后缀名。(同时我们也可以知道,Xcode 是根据头文件被引用的情况来判定头文件的编译 类型的)。

如何使用opencv在ios中编写一个简单的图像加载函数

【中文标题】如何使用opencv在ios中编写一个简单的图像加载函数【英文标题】:How to write a simple image load function in ios using opencv 【发布时间】:2013-01-25 15:17:55 【问题描述】:

我可以在 ios 中使用 Opencv 编写一个简单的 C++ 代码来加载图像吗?你能指出我可以开始的一些简单项目吗?

【问题讨论】:

【参考方案1】:

看看我在 GitHub 上的简单入门项目...

OpenCVSquares

OpenCVCircles

图像加载在 cocoa/objective C 中完成,openCV 处理在 C++ 中使用 openCV 框架。有一个小的 obctiveC++ 包装对象在两者之间传递图像数据,并从 iOS (UIImage) 和 openCV (cv::Mat) 转换图像格式。

您不必这样做,但我发现将 C++ 代码与 Objective-C 代码尽可能分开是有帮助的。

【讨论】:

感谢您的回答。我想知道我们可以将其发送给苹果进行审查并作为产品发布吗?抱歉,如果这个问题很愚蠢,我是新手。 我自己没有这样做,但你应该没有问题。前往应用商店并搜索“openCV”——您会看到一系列有趣的应用

以上是关于如何在 iOS 工程中使用 OpenCV的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 项目中减小 openCV 框架大小

如何使用opencv在ios中编写一个简单的图像加载函数

android如何在 java opencv 中查找最大轮廓

网络工程师如何在Centos 7 安装OpenCV

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

如何将 openCV 导入 iOS 8 项目