OpenCV學習系列(零) Mac下OpenCV + xcode環境搭建
[-= 博客目錄 =-]
1-學習目標
1.1-本章介紹
因為不可抗力(╯﹏╰),最近去圖書館借了一本《OpenCV編程案例詳解》,准備學習OpenCV的使用,因為身患懶癌,所以還是想通過博客的方式來督促自己學習吧,以后這個系列每周必有一篇(flag大旗已立)……
這篇博客之所以命名為零,是因為這是用來介紹怎么樣搭建OpenCV的開發環境的。
1.2-實踐內容
- homebrew安裝
- 安裝CMake
- 源碼安裝OpenCV
- xcode配置與測試
- 基礎問題回答
1.3-相關說明
- 我使用的是Mac環境,所以為了方便我通過xcode來學習OpenCV的使用
2-學習目標
2.1-homebrew安裝
這個網上很多嘛~
Homebrew - 安裝與使用
2.2-使用homebrew安裝CMake
安裝了homebrew之后相當於安裝了一個軟件管家(命令行版2333),直接通過brew命令就可以安裝大部分工具:
sudo brew install cmake //homebrew
默認的安裝路徑是:/usr/locat/Celler/
一般情況下,如果很久沒有使用homebrew,他會更新軟件包,所以請在網絡良好的情況下使用,不然會……超慢。
更新homebrew也可以手動:
brew update
brew upgrade
2.3-源碼安裝OpenCV
第一步先上官網下載源碼:https://opencv.org/releases.html
安裝可以參考官網上的教程:https://docs.opencv.org/master/d7/d9f/tutorial_linux_install.html
第二步編譯源碼文件:
1. cd ~/opencv
2. mkdir build
3. cd build
4. cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
5. make
6. sudo make install
這里就簡單粗暴的上步驟吧,當然我建議最好看看官網,關於cmake參數的設置,確認你所喜歡的安裝方式,當然因為懶癌所以我就直接安裝官網上的來了,以后也好找……
安裝的整個過程在一個小時左右,應該大概也許因人而異吧~
2.4-xcode配置與測試
- 我們先create一個C++project,在工程右邊選中BuildSettings,右邊搜索框里輸入search,找到Search Paths設置項。
- 找到Header&Library Search Paths(頭文件搜索路徑)
在里面輸入如下路徑
$(PROJECT_DIR) //這個代表你當前工程路徑
/usr/local/include //這是之前默認cmake后OpenCV頭文件放置路徑
在Library Search Paths里輸入
$(PROJECT_DIR) //這個代表你當前工程路徑
/usr/local/lib //這是之前默認cmake后OpenCV庫文件放置路徑
這里使用的是xcode Version 9.3 (9E145)版本,在Search Paths設置中會有debug和release兩個設置,弄成一樣的就好。
如何設置多路徑?只要雙擊框框,彈出一個詳細框,左下角有個加號可以增加Search Paths。為什么要加$(PROJECT_DIR)
因為如果把這個項目移動到另一台機器上,如果沒有這個,它可能會出現找不到庫或者頭文件(因為搜索路徑不同)。加了$(PROJECT_DIR)
之后你只需要把library放到項目路徑下就好,詳細可以看Xcode Build Search Paths設置.
關於xcode更加直觀的說明可以參考Mac平台上OpenCV開發環境搭建,以下是關於xcode項目的一段說明:
1.Open Xcode, choose New -> New Project -> Command Line Tool
2.Name it and select C++ for type
3.Click on your project from the left menu. Click the build settings tab from the top. Filter all. Scroll to Search Paths. Under header search paths, for debug and release, set the path to /usr/local/include
. Under library search paths, set the path to $(PROJECT_DIR)
. Finally, check if C++ standard library is libstdc++ or not, if not, change it to this!
4.Click on your project from the left menu. File->New->New Group
, Name the group OpenCV Frameworks.
5.Select the folder (group) you just labeled, OpenCV Frameworks in the left menu. Go to File -> add Files, Type /, which will allow you to manually go to a folder. Go to -> /usr/local/lib
6.Select both of these files, libopencv_core.dylib
, libopencv_highgui.dylib
, and click Add. (you may need to add other library files from this folder to run other code.)
7.You must include this line of code in the beginning of your main.cpp file:
#include <opencv2/opencv.hpp>
很淺顯的英文,大家應該都看得懂,為什么要放上來,主要是覺得原版比較看的比較直觀。
3. 添加lib文件
我們在Build Phases里找到Link Binary With Libraries
,點擊+號
下來我們找文件
因為我們之前安裝的lib文件在/usr/local/lib/下,可視化的訪問默認是隱藏的,所以我們使用commend+shift+G來search它:
找到后我們添加一些常用庫:
搞定,可以開始測試了!
4. 測試
下面是網上找的測試代碼:
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char** argv) {
Mat image;
image = imread("/Users/mac/Pictures/loli.jpg", 1);
namedWindow("Display Image", WINDOW_AUTOSIZE);
imshow("Display Image", image);
Mat gray;
cvtColor(image, gray, COLOR_RGBA2GRAY);
namedWindow("gray");
imshow("gray", gray);
waitKey(0);
return 0;
}
大家注意string path = "/xxx/xxx/xxx.jpg";
這里需要自己設置一下。下面是效果圖:
2.5-基礎問題回答
- 關於之前編譯源碼文件的第四步,如果不行可以參考官方解決辦法:
Use
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local ..
without spaces after -D if the above example doesn't work. - 在設置路徑的時候遇到了很多問題:
OpenCV(3.4.1) Error: Assertion failed (size.width>0 && size.height>0) in imshow, file /Users/mac/Study/OpenCV/opencv-3.4.1/modules/highgui/src/window.cpp, line 356
libc++abi.dylib: terminating with uncaught exception of type cv::Exception: OpenCV(3.4.1) /Users/mac/Study/OpenCV/opencv-3.4.1/modules/highgui/src/window.cpp:356: error: (-215) size.width>0 && size.height>0 in function imshow
后面花了很多時間,查了很多資料,最后發現……只是路徑輸錯了,Pictures
輸錯成Picture
搞半天才弄好,總之大家設置路徑的時候一定要是絕對路徑,而且要檢查清楚,下面舉幾個例子:
mac里面可以是這樣:/Users/mac/Pictures/loli.jpg
最好不要這樣:~/Pictures/loli.jpg
windows: D:\\Pictures
對於用到一些函數感興趣的可以參考:OpenCV從入門到放棄(四):HighGui組件細講