繁体   English   中英

在Mac OS X上安装OpenCV 3作为框架

[英]Installing OpenCV 3 on Mac OS X as a framework

我想使用OpenCV在OS X El Capitan上制作应用程序。 我决定使用2015年6月4日发布的最新版本3.0.0。我使用brew安装了2.4.x版本,但由于版本3现在有一个构建框架的osx构建脚本,我想使用它方法。

从OpenCV.org下载版本3后,我在opencv-3.0.0目录中打开了一个终端窗口并执行了build_framework.py脚本,如下所示:platforms / osx / build_framework.py osx(osx参数告诉脚本编写一个名为osx的目录,用于输出框架)

所有内容都顺利构建,因此我将osx目录中构建的框架添加到我的项目中。

令我惊讶的是,我的项目不会没有错误地构建。 首先是以下两个问题。 这是第一个截图: opencv.hpp标头问题

如果第一个问题没有显示,opencv2.framework中每个头文件的#ifndef __cplusplus#错误将被触发。

标头必须编译为C ++

事实证明,问题是需要在Objective-C头之前调用C ++头,因此我将以下内容添加到项目的PCH文件中: 标头BuildOrder

您实际上可以将此代码添加到需要opencv.hpp头文件的头文件中,而不是为项目创建PCH文件。 您还应该确定说#include而不是#import,但它们都应该有效。

一旦我发现了这些问题,我仍然坚持使用39个未定义的符号来构建x86_64。

未定义的符号

起初我认为该框架不包括x86_64版本,但快速检查显示它包括i386和x86_64版本的目标文件,并且我的项目设置都是正确的。 接下来,我查找了一些未定义符号的名称,发现它们是名为OpenCL的项目的一部分。 OpenCL应该加速一些功能,并包含在opencv3中。 起初我认为该模块没有构建,但在阅读build_framework.py构建脚本后,我发现它是从CMakeLists.txt文件获取其设置。 读取此信息表明,在OpenCL标志之后:正在设置WITH_OPENCL WITH_OPENCLAMDFFT WITH_OPENCLAMDBLAS CMakeLists.txt Orignial

稍微阅读让我相信Mac OS X El Capitan与OpenCL不兼容,因为它似乎需要内核支持。 因此我通过添加“AND NOT APPLE”WITH_OPENCL WITH_OPENCLAMDFFT WITH_OPENCLAMDBLAS将CMakeLists.txt文件更改为不构建OpenCL

CMakeLists.txt已更新

在更改了CMakeLists.txt文件并再次构建框架之后,我的程序能够与opencv2.framework链接(不知道为什么他们仍称它为opencv2而不是opencv3)并运行。

我花了更多的时间来承认,所以我想我会在这里分享我的经验,希望能够让其他人免于让OpenCV 3使用他们的Mac OS X应用程序而感到沮丧。 干杯!

经过近2年,我遇到了同样的问题。 但是,我找到了一个更体面的解决方案。

与您的想法相反,macOS实际上与OpenCL兼容,尽管它没有链接到OpenCV2.framework。 在链接OpenCL.framework之前,我尝试将我的二进制文件与liblapack.tbdlibcblas.tbdOpenCL.framework链接opencv2.framework ,它就像魅力一样。

所以只需转到项目设置 - >构建阶段 - >使用库链接二进制文件并添加以下内容:

Link Binary With Libraries部分

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM