加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 06:50:47 所属栏目:百科 来源:网络整理
导读:我想使用OpenCV在OS X El Capitan上制作应用程序.我决定使用2015年6月4日发布的最新版本3.0.0.我使用brew安装了2.4.x版本,但由于版本3现在有一个构建框架的osx构建脚本,我想使用它方法. 从OpenCV.org下载版本3后,我在opencv-3.0.0目录中打开了一个终端窗口并
我想使用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 Header Problem

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

Header must be compiled as C++

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

Header BuildOrder

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

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

Undefined Symbols

起初我认为该框架不包括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不兼容,因为它似乎需要内核支持.所以我改变了CMakeLists.txt文件,不添加“AND NOT APPLE”来构建OpenCL
WITH_OPENCL
WITH_OPENCLAMDFFT
WITH_OPENCLAMDBLAS

CMakeLists.txt Updated

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

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

解决方法

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

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

所以只需转到项目设置 – >构建阶段 – > Link Binary With Libraries并添加以下内容:

Link Binary With Libraries section

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读