opencv源碼是一個神奇的世界,如果想研究opencv的源碼,就不能用編譯好的庫。因爲那樣調試看不到函數的實現。
在mac上編譯opencv源碼比較簡單,但是也有個坑,所以在此記錄下來。
- 下載opencv的源碼,可以從github或者sourceforge下載。下載好後解壓到opencv2.4.13文件夾。
- 進入解壓之後的OpenCV文件夾,然後新建一個release的文件夾,並進入,執行以下命令。
cmake -G "Unix Makefiles" ..
make
sudo make install
按理編譯通過就OK了,但是這裏make的時候編譯有錯:error: “libswscale is necessary to build the newer OpenCV ffmpeg wrapper”
這是由於ffmpeg引起的。所以需要確保已經裝了ffmpeg。如果沒安裝,可以通過brew install ffmpeg
安裝,如果已經安裝或者未知,可以通過brew info ffmpeg
check一下。
接下來需要修改…/modules/highgui/src/cap_ffmpeg_impl.hpp文件中的一個宏開關。修改如下:
//修改前
#ifdef WIN32
#define HAVE_FFMPEG_SWSCALE 1
#include <libavcodec/avcodec.h>
#include <libswscale/swscale.h>
#else
//修改後
#ifdef 1
#define HAVE_FFMPEG_SWSCALE 1
#include <libavcodec/avcodec.h>
#include <libswscale/swscale.h>
#else
修改後就可以make成功了。
編譯成功後就可以在xcode中新建一個工程測試了,新建工程後添加/usr/local/include
和/usr/local/include
, 以及new一個group 把相關lib添加進去就可以運行調試代碼了。