ubuntu下使用OpenCV
2013-01-07 01:14 robturtle 阅读(11006) 评论(1) 编辑 收藏 举报和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"); }