如何基于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 只是一種格式可以選擇跳過檢查,
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/466931.html
標籤:其他
