opencv官網上的window下載包裏不含適合codeblocks的二進制文件,只有VS的,所以只有自己動手了。
VS與codeblocks的最大區別就在於用的默認編譯器不一樣,opencv官網上給的是用VC編的,codeblocks直接用會報缺少dll文件,一查都是VC的。所以要用mingw自己編譯一遍。
所以問題是用mingw編譯opencv源碼得到二進制文件。
cmake配置
這一過程要用到cmake。其界面如下:
點擊configure,選擇codeblocks-mingw makefiles,第一次會顯示四種選項,選第一種
codeblocks必須安裝,而且必須安裝了編譯器。綠色版的cmake會找不到編譯器,因爲它是通過註冊表查找的。之前用綠色版的報如下錯誤:
Cmake was unable to find a build program corresponding to “MinGW Makefiles”, CMAKE_MAKE_PROGRAM” is not set, You probably need to select a different build tool.
Configure通過後會顯示:
下面就要選擇配置cmake選項了。根據網絡經驗,mingw是不支持cuda的,所以和cuda相關的選項都要去掉,另外opencv3.0不支持ipp,所以也要去掉。所以
再次點擊Configure,
變白了表示通過,再點generate,
codeblocks(mingw)編譯
下面輪到codeblocks上場了,打開cmake gui最開始設置的where to build the binaries,在gui的最上面,打開這個地址,找到OpenCV.cbp,就是這個
這是個codeblocks的工程文件,就是把所有文件鏈接到一起的那東西,雙擊在codeblocks裏打開他,
然後,戳一下這裏就好了。
接着就是漫長的等待了,酷睿雙核大概需要一個多小時。
編譯完後,看看這裏和這裏
如果這兩個夾子下面有貨而且很多,那麼恭喜你成功了,
工程配置
下面就是應用了,還是codeblocks,新建一個工程,工程名右鍵->build options
1)所要引用的庫有哪些(linker settings)
加入所有lib文件夾下的庫
2)頭文件搜索路徑(search directories->complier)
3)二進制文件(不僅僅是庫文件還有exe )的搜索路徑(search directories->linker)
好,所有配置工作完成了,可以正式開始編碼了。
從網上找了一個例子,鏈接
需要注意的是,cvLoadImage ("E:/CodeLink/Init/bin/Debug/test.png", 1)
裏面的路徑需要用/而不是windows裏的\。
#include <cv.h>
#include <highgui.h>
using namespace std;
int main()
{
IplImage* src = cvLoadImage ("E:/CodeLink/Init/bin/Debug/test.png", 1);
IplImage* dst = cvCreateImage (cvGetSize(src), IPL_DEPTH_32F, 1);
IplImage* canny = cvCreateImage (cvGetSize(src), IPL_DEPTH_8U, 1);
cvCvtColor (src, canny, CV_RGB2GRAY);
cvCanny (canny, canny, 100, 200, 3);
cvDistTransform (canny, dst, 3, 3);
cvNamedWindow ("src", 1);
cvShowImage ("src", src);
cvNamedWindow ("dist", 1);
cvShowImage ("dist", canny);
cvWaitKey (0);
cvReleaseImage (&src);
cvReleaseImage (&canny);
cvReleaseImage (&dst);
return 0;
}
編譯之前先看看頭文件是否能打開,各個函數是否都可以找到定義,如果都可以,那麼配置無錯,可以編譯了。
看看結果,左側是原圖,後側是處理後的: