在MAC Xcode下安裝OpenCV

MAC Xcode下安裝OpenCV

首先交代下安裝環境MACOSX10.11,安裝版本爲OpenCV2.4.13Xcode的版本爲7.3.1

一,安裝Homebrew

Homebrew類似UbuntuaptgetFedorayum,簡單來說就是爲了方便安裝軟件而生的。打開Homebrew官方網站http://brew.sh/index_zh-cn.html,找到安裝homebrewruby命令:

ruby -e "$(curl -fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install)"

 

 

,利用homebrew安裝cmake

輸入brew update,然後輸入brew upgrade。之後輸入brew install cmake這樣等待一會cmake就安裝好了。

 

三,到OpenCV官網下載MACLinux版本的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目錄下便有了opencvopencv2兩個目錄,在/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

Installing OpenCV

四,配置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/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章