在MAC Xcode下安裝OpenCV
首先交代下安裝環境MACOSX10.11,安裝版本爲OpenCV2.4.13,Xcode的版本爲7.3.1。
一,安裝Homebrew
Homebrew類似Ubuntu的apt-get,Fedora的yum,簡單來說就是爲了方便安裝軟件而生的。打開Homebrew官方網站http://brew.sh/index_zh-cn.html,找到安裝homebrew的ruby命令:
ruby -e "$(curl -fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install)"
二,利用homebrew安裝cmake
輸入brew update,然後輸入brew upgrade。之後輸入brew install cmake這樣等待一會cmake就安裝好了。
三,到OpenCV官網下載MAC/Linux版本的OpenCV
OpenCV下載地址:http://opencv.org/downloads.html
目前最新版本是2.4.13,下載後解壓,在終端執行下面代碼:
cd <path-to-opencv-source>
mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
make
sudo make install
[完成之後在/usr/local/include目錄下便有了opencv和opencv2兩個目錄,在/usr/local/lib目錄下有很多的opencv相關的動態庫,例如libopencv_core.dylib等等,還有幾個其他的文件,它們都存放在/usr/local目錄下]
[注1:如果不需要了,想要卸載OpenCV的話,可以回到release目錄,執行sudomake uninstall,然後手動刪除一些/usr/local下與OpenCV有關的目錄和文件]
[注2:如果不想把OpenCV安裝在默認的/usr/local/目錄下的話,例如爲了防止Homebrew中對opencv部分的報錯,而又無法使用Homebrew正常安裝opencv的情況下,可以考慮將opencv安裝到其他的位置,修改CMAKE_INSTALL_PREFIX=/usr/local即可,但是在Eclipse中的項目中可能會出現問題,詳情看後面]
其他參考內容:
Building OpenCV from Source Using CMake, Using the Command Line
四,配置Xcode,編寫OpenCV的測試用例
打開Xcode,新建一個command line工程:
工程名字TestOpenCVDemo,注意語言選擇C++。
這樣C++的HelloWorld就建好了,編譯應該能正常運行。接下來先來配置xcode再來寫代碼。
最左邊選中工程,然後右邊選中Targets,再BuildSettings下,右邊搜索框裏輸入search,很快就能找到SearchPaths設置項。在Header Search Paths裏輸入:/usr/local/include 在Library Search Paths裏輸入:/usr/local/lib
接着在Build Phases裏找到Link BinaryWith Libraries,點擊+號
選擇add other,然後按下/鍵,輸入lib的路徑/usr/local/lib,點go:
然後就是選擇OpenCV的庫了,用哪個添加哪個,沒必要都添加完。我們添加最基礎的幾個:
libopencv_core.2.4.13.dylib
libopencv_highgui.2.4.13.dylib
libopencv_imgproc.2.4.13.dylib
libopencv_ml.2.4.13.dylib
可以按下command實現多選。添加上面這四個最常用的就可以勝任本次的測試代碼了。
在main.cpp裏輸入以下內容,實現顯示一張照片及顯示灰度化後的:
#include <unistd.h>
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main(int argc, const char * argv[]) {
// insert code here...
std::cout << "Test OpenCV!\n";
char buffer[256];
char* p_cwd = getcwd(buffer, sizeof(buffer));
string path ;
if (p_cwd) {
path = p_cwd;
}
else{
std::cout << "Path Error!\n";
return 0;
}
path += "/Test.jpg";
//string path = "/Volumes/Data/AutumnView.jpg";
Mat image = imread(path);
namedWindow("Test");
imshow("Test", image);
Mat gray;
cvtColor(image, gray, COLOR_RGBA2GRAY);
namedWindow("gray");
imshow("gray", gray);
waitKey(0);
return 0;
}
運行結果如下:
至此大功告成。
參考:
1. http://blog.csdn.net/yanzi1225627/article/details/42113661
2. https://segmentfault.com/a/1190000000711132
3. http://wuzhaoxi1992511.blog.163.com/blog/static/18375811820132213544889/