1. 程式人生 > >[openCV]Mac平臺下openCV的搭建(Xcode + openCV 2.4.10)

[openCV]Mac平臺下openCV的搭建(Xcode + openCV 2.4.10)

1.序言

從今天開始,開始使用Mac來跑openCV了。開始感覺其實應該開發阻力不是太大樣子,事實上來講,其實比Windows要繁瑣一些呢。現時點的配置為

  • os x yosemite 10.10.3
  • openCV 2.4.10(現時點的最新版本為:3.0 RC1)
  • Xcode Version 6.3.2 (6D2105)

在這個配置下,我按照如下步驟搭建了我的openCV平臺。

2.配置環境的步驟

2.1 openCV的選擇

剛才也說了,現時點openCV的最近版本為openCV 3.0 RC1。我一開始也選擇了使用openCV 3.0 RC1,然而在配置完之後,程式編譯無法通過,有一個頭檔案貌似無法找到。當時也忘記了截圖,後續等3.0 RC1更新後,我再嘗試更新吧,那時候有還是有問題的話,我再把截圖放上來。

2.2 安裝openCV的前置準備

  • 安裝brew

    這個軟體挺強大的,是Mac平臺下一個套件的管理工具。可以使用一個命令,就可以來install與uninstall一個套件。其官網(http://brew.sh/index_zh-cn.html)寫了入手的方法。

    在終端視窗中,輸入如下指令碼

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

  • 安裝CMake

    CMake是一個跨平臺的編譯工具,這個也是一個必須的工具。由於我們安裝了Homebrew,此時就可以在終端裡輸入以下命令,來install CMake。

    sudo brew install cmake

這裡需要許可權。

  • IDE的選擇:Xcode的安裝

    其實這裡有很多的選擇,我選擇了使用Apple自帶的Xcode去進行openCV的執行。這裡挺簡單的,直接download就可以了。

2.3 openCV的安裝

從這裡開始進行openCV的安裝,首先將下載好的zip檔案解壓,放到特定的路徑下。終端內,通過命令cd進入到該路徑下。然後執行下列程式碼

  cd <path-opencv>
  mkdir release
  cd release
  cmake -G "Unix Makefiles"
.. make

按照以上步驟,可以將openCV安裝好。這裡有個問題,我使用openCV 2.4.10安裝的時候,有個地方會跳兩個Error。

error: comparison of array 'this->latestPoints' not equal to a null pointer is always true
  [-Werror,-Wtautological-pointer-compare]
if (latestPoints != NULL)

error: address of array 'this->latestCounts' will always evaluate to 'true' [-Werror,-Wpointer-bool-conversion]
if( latestCounts )    

這兩個Error來自於calibfilter.cpp這個檔案,需要修改裡面的一部分程式碼之後,就能通過安裝了。具體的可以參考這個部落格,說的很詳細了。

按照這裡面的連結,在指定的幾個地方修改程式碼之後,就可以安裝上openCV 2.4.10了。

  • 在路徑/usr/local/include下會生成opencv與opencv2子資料夾,裡面包含了許多opencv的標頭檔案。
  • 在路徑/usr/local/lib下也會生成opencv的相關的庫。

2.4 openCV的解除安裝

解除安裝也挺簡單,回到release目錄下,執行命令sudo make uninstall就妥妥的了。然後,需要手動清理一下/usr/local/這個目錄下,關於opencv的一些相關檔案。

3.在Xcode下建立一個openCV project

  • 首先開啟事先準備好的Xcode,在下面這個一個介面裡選擇OS X -> Application -> Command Line Tool

新建工程

  • 填寫自己的product的名字,然後選則語言為C++。

新建工程2

  • 需要為新建的工程指定Header搜尋路徑。這裡,填入/usr/local/include/usr/local/include/opencv就可以了。

這裡寫圖片描述

  • 需要為新建的工程指定Library搜尋路徑。這裡,填入/usr/local/lib

這裡寫圖片描述

  • 這裡其實還需要check一下 C++ standard library 是否為libstdc++。

  • 最後,為工程新增所必須的.dylib檔案。在工程下新建個資料夾openCV_Frameworks,右鍵選擇Add Files to..
    列表內容
    轉到路徑/usr/local/lib內去尋找程式必須的.dylib檔案,這裡為了方便,我將所有的.dylib檔案都新增入了工程內。

  • 到此為止,mac下使用Xcode就可以開是進行openCV的開發了。測試用程式碼如下所示,從Mac自帶的攝像頭讀入影象,然後canny提取了邊緣然後顯示。

//
//  main.cpp
//  Camera_Capture
//
//  Created by zhoufan on 15/5/24.
//  Copyright (c) 2015年 zhoufan. All rights reserved.
//


#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>


using namespace std;
using namespace cv;

IplImage* doCanny(IplImage* image_input,
                  double lowThresh,
                  double highThresh,
                  double aperture)
{
    if(image_input->nChannels != 1)
        return (0);

    IplImage* image_output = cvCreateImage(cvGetSize(image_input),
                                           image_input->depth,
                                           image_input->nChannels);

    cvCanny(image_input,image_output,lowThresh,highThresh,aperture);

    return(image_output);
}


int main(int argc, char* argv[])
{
    cvNamedWindow("Camera" , CV_WINDOW_AUTOSIZE );

    CvCapture* capture = cvCreateCameraCapture(CV_CAP_ANY);

    assert(capture != NULL);

    IplImage *frame = 0;
    frame = cvQueryFrame(capture);

    IplImage *frame_edge = cvCreateImage(cvGetSize(frame),
                                         IPL_DEPTH_8U,
                                         1);
    while(1)
    {
        frame = cvQueryFrame(capture);
        if(!frame) break;

        cvConvertImage(frame,frame_edge,0);
        frame = cvCloneImage(frame_edge);

        frame_edge = doCanny(frame_edge,70,90,3);

        cvShowImage("Camera",frame_edge);
        char c = cvWaitKey(15);
        if(c == 27)  break;
    }

    cvReleaseCapture(&capture);
    cvReleaseImage( &frame_edge );
    cvReleaseImage( &frame);


    return (int)0;
}

執行結果如下圖所示。
這裡寫圖片描述

4.結言

到此,已經可以在Xcode下愉快的和openCV君玩耍了。其實想說的是,在安裝openCV 2.4.10的時候,還是會彈出一些warning, 或許在以後的開發中,會有些問題吧。嘛,到時候再說咯。

參考文獻

=============更新日誌===================

2015 - 5 - 25 初版