[openCV]Mac平台下openCV的搭建(Xcode + openCV 2.4.10),opencvxcode
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更新後,我再嘗試更新吧,那時候有還是有問題的話,我再把放上來。
- openCV下載連結:http://opencv.org/downloads.html
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
這裡需要許可權。
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這個檔案,需要修改裡面的一部分代碼之後,就能通過安裝了。具體的可以參考這個部落格,說的很詳細了。
在MacOS10.10安裝OpenCV2.4.10遇到的問題和解決辦法
按照這裡面的連結,在指定的幾個地方修改代碼之後,就可以安裝上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++。
- 需要為建立的工程指定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, 或許在以後的開發中,會有些問題吧。嘛,到時候再說咯。
原文發於部落格:http://blog.csdn.net/thnh169/
參考文獻
[1]Develop With OpenCV on Mac :http://hujiaweibujidao.github.io/blog/2014/03/13/develop-with-opencv-on-mac-os-x/
[2]OpenCV 2.4.6 + mac Xcode 4.6 安裝教學 : http://vincecc.blogspot.jp/2013/09/opencv-246-mac-xcode-46.html
[3]在MacOS10.10安裝OpenCV2.4.10遇到的問題和解決辦法 : http://blog.sina.com.cn/s/blog_6a740b360102ve3s.html
[4]OpenCV on Mac OSX: A step-by-step guide :http://tilomitra.com/opencv-on-mac-osx/
[5]在MacOS和iOS系統中使用OpenCV : http://blog.devtang.com/blog/2012/10/27/use-opencv-in-ios/
=============更新日誌===================
2015 - 5 - 25 初版