簡體   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