如何基於Xcode搭建OpenCV開發環境 我的開發平臺是MacBook Pro (13-inch, M1, 2020),版本11.4,碩士課題是關於電腦視覺的,平時主要用Clion/PyCharm基於opencv-python/C++進行開發。近期閑來沒事體驗一下蘋果官方的開發工具,由於遇到了一 ...
如何基於Xcode
搭建OpenCV
開發環境
我的開發平臺是MacBook Pro (13-inch, M1, 2020)
,版本11.4
,碩士課題是關於電腦視覺的,平時主要用Clion/PyCharm
基於opencv-python/C++
進行開發。近期閑來沒事體驗一下蘋果官方的開發工具,由於遇到了一些坑,網上的資料也不是很多,因此決定記錄一下配置過程。
相應工具的安裝
Xcode-13
有兩種安裝方法:
- (推薦)在
App Store
中安裝Xcode
,直接安裝就行,省心省事; - 登錄
Apple Id
開發者賬號,在官方網站進行下載,註意系統版本要對應支持的版本;
Homebrew
Homebrew是Mac
上的包管理工具,可以複製以下代碼,直接在終端中安裝。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
OpenCV
完成了Homebrew
的安裝,只需要通過brew
命令即可安裝openCV
,由於自己編譯OpenCV
可能會出現很多問題,因此推薦通過用這種方法來安裝。
brew install opencv
安裝完成後,要記錄一下你的OpenCV
安裝路徑,如下圖所示,我的OpenCV
的安裝路徑是:
/opt/homebrew/Cellar/opencv/4.5.3_2
pkg-config
pkg-config
是在編譯應用程式和庫時使用的輔助工具,可以幫助我們找到找到正確的OpenCV
鏈接器符號 (Linker Flags) ,在後續的步驟中會用到。 安裝pkg-config
,也只需要在終端輸入以下命令
brew install pkg-config
配置Xcode
6.創建Xcode項目
在配置OpenCV
環境之前,我們首先要新建一個C++
項目,如圖所示,選擇macOS -> Command Line Tool。
併在下一步中的編程語言中選擇:C++
。
使用pkg-config
查看OpenCV
的編譯依賴
查看您的opencv.pc
文件所在位置,一般opencv.pc
文件所在位置為
/opt/homebrew/Cellar/opencv/<版本號>/lib/pkgconfig/
如筆者的版本為4.5.3_2
,opencv.pc
現已改為opencv4.pc
(不同電腦可能有所不同,讀者可以cd
到相應文件目錄查看具體信息)
/opt/homebrew/Cellar/opencv/4.5.3_2/lib/pkgconfig/opencv4.pc
使用下麵的命令查看OpenCV
的鏈接器符號 (Linker Flags) ,筆者的代碼為
pkg-config --cflags --libs /opt/homebrew/Cellar/opencv/4.5.3_2/lib/pkgconfig/opencv4.pc
你會得到類似於如下的輸出結果,我們需要參照輸出結果在 Xcode 中進行配置
-I/opt/homebrew/opt/opencv/include/opencv4 -L/opt/homebrew/opt/opencv/lib -lopencv_gapi -lopencv_stitching -lopencv_alphamat -lopencv_aruco -lopencv_barcode -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -
...(後續省略)
設置Header Search Paths
在 Xcode 中設置 Header Search Paths
,先單擊 Xcode 項目,然後點擊 Build Settings
,然後搜索Header Search Paths
。將 Header Search Paths
路徑設置為剛纔得到的輸出結果“-I
”之後的路徑,如我需要對如下路徑進行添加。
/opt/homebrew/opt/opencv/include/opencv4
設置 Library Search Paths
類似地,在 Build Settings
中搜索Library Search Paths
,將 Library Search Paths
路徑設置為剛纔得到的輸出結果“-L
”之後的路徑,如我需要對如下路徑進行添加。註意,請將Lib
目錄手動拖動到最上頭
/opt/homebrew/opt/opencv/lib
設置Linker Flags
將上述pkg-config --cflags --libs .../opencv4.pc
導出的一長串信息全部複製下來,添加到如下所示的框框里。
測試
配置到這一步 Xcode 相關內容已經結束。可以嘗試運行簡單的OpenCV程式判斷是否能夠正常運行,以下給出簡單的示常式序,功能僅為打開圖片與退出。
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
#include <unistd.h>
using namespace cv;
using namespace std;
int main( int argc, char** argv ) {
printf("Hello, world!"); // 手工斷點/doge
char buf[200];
getcwd(buf,sizeof(buf));
printf("current working directory: %s\n", buf); // 測試當前工作目錄
Mat image;
image = imread("test.png", IMREAD_COLOR); // 註意圖片的路徑
if(! image.data ) { // 養成良好工作習慣
cout << "Could not open or find the image" << std::endl;
return -1;
}
imshow( "Display window", image);
waitKey(0);
return 0;
}
運行結果展示:
其它設置
使用相對路徑
Xcode使用圖像或資源的絕對路徑。為了設置相對路徑需要設置Working Directory
。依次點擊
(菜單欄) Product > Scheme > Edit Scheme
|-> Run -> option -> ✅ Use Custom Working Directory
然後自定義項目目錄。
常見錯誤
Not a Doxygen trailing comment
在Build Settings
中搜索 “Documentation Comments
”,將 Documentation Comments
設置為 No
即可解決該問題。Doxygen 只是一種格式可以選擇跳過檢查。