ubuntu下使用OpenCV


和boost類庫一樣,ubuntu下也提供了opencv的二進制包,安裝非常簡單:

$ sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg62-dev libtiff4-dev cmake libswscale-dev libjasper-dev
$ sudo apt-get install libopencv-dev

我現在學習的是O’Reilly 的《Learning OpenCV》,書中是以1.0版本為例的。而我現在安裝的版本是2.3.1,其組織方式與1.0還是有很大的不同的。比如第一個例子里,使用highGUI是包含頭文件"highgui.h”,而我安裝好后find不到這個名字的頭文件,幾個默認包含路徑下也沒有其他類似vc.h之類的文件生成。仔細找了一下,原來是在/usr/include下生成了一個文件夾opencv2,而內部highgui,cv等模塊又用文件夾組織起來,還有一個頭文件是"opencv.hpp”,文件里包含了所有模塊的頭文件。查看內容可以發現,原先的"highgui.h"已經改成了"highgui_c.h",除此之外還多了一個"highgui.hpp"。感覺和boost庫的組織形式很像。記得前段時間還吐槽了java中包組織方式和文件系統的耦合,現在看這些現代c++庫組織,倒有種異曲同工的感覺。

然后又檢查了下/usr/lib,庫文件的命名方式如"libopencv_XXX.a/so"。加入"-l opencv_core –l opencv_highgui",第一個例子順利通過了編譯。下面奉上測試樣例:

// using lib: -l opencv_core -l opencv_highgui
#ifdef OPENCV_v1
// if you're using version 1
#include "highgui.h"
#else
// or you can include "opencv2/highgui/highgui.hpp" "opencv2/core/core.hpp"
#include "opencv2/opencv.hpp"
#endif
#include <iostream>

#define Usage() \
        { std::cerr << "Usage: ./showpic FILE" << std::endl; }

int main(int argc, char** argv)
{
        if (argc != 2) Usage();
        IplImage* img = cvLoadImage(argv[1]);
        cvNamedWindow("Example1", CV_WINDOW_AUTOSIZE);

        cvShowImage("Example1", img);
        cvWaitKey(0);

        cvReleaseImage(&img);
        cvDestroyWindow("Example1");
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM