Ubuntu+OpenCV2.4.11+ CodeBlocks 配置
1.OpenCV 与 CodeBlocks 的安装都比较简单,好多教程。
参考http://www.cnblogs.com/lyutian/p/4425956.html 安装opencv。
Codeblocks安装参考http://blog.csdn.net/xinyunyishui/article/details/50967395
使用opencv库
1. 命令行形式
直接编写C 或者C++ 程序,然后分别用gcc,g++编译器生成可执行程序。
1) C程序版:
#include <highgui.h> int main(int argc, char **argv) { IplImage* img = cvLoadImage(argv[1],CV_LOAD_IMAGE_COLOR); cvNamedWindow("Image_show",CV_WINDOW_AUTOSIZE); cvShowImage("Image_show",img); cvWaitKey(0); cvReleaseImage(&img); cvDestroyWindow("Image_show"); return 0; }
编译过程:
$ gcc test.c -o test `pkg-config opencv --cflags --libs`
2) C++程序版:
#include <opencv2/opencv.hpp> using namespace cv; int main( int argc, char** argv ) { Mat image; image = imread( argv[1], 1 ); if( argc != 2 || !image.data ) { printf( "No image data \n" ); return -1; } namedWindow( "Display Image", WINDOW_AUTOSIZE ); imshow( "Display Image", image ); waitKey(0); return 0; }
编译过程:
$ g++ first.cpp -o first `pkg-config opencv --cflags --libs` // 包含、链接参数一定要放在后面
2. CMake运行形式
cmake 是先将程序所需的依赖、原料组织起来,产生Makefile,然后在又make来编译生成可执行程序。最重要的就是编写CMakeList.txt文件。以上文C++程序为例,CMakeList.txt为:
cmake_minimum_required(VERSION 2.8) project( first ) find_package( OpenCV REQUIRED ) add_executable( first frist.cpp ) target_link_libraries( first ${OpenCV_LIBS} )
然后,CMake,再make:
$ cmake . $ make $ ./first
如下是 codeblocks下opencv开发的配置。
1.查看相关文件的路径
打开终端,输入: ~$ pkg-config --cflags opencv //查看 opencv 头文件(.h) 位置
我的输出: -I/usr/local/include/opencv -I/usr/local/include
输入: ~$ pkg-config --libs opencv //查看opencv 库文件位置
输出:
2.打开cd:block新建一个空项目,右击项目名进入Build options.修改debug下的内容.
(1) Search directories-->Compiler 点击add按钮添加上面的opencv头文件路径(如下图):
(2)Linker settings下面添加opencv的lib文件,通过add按钮键添加进来.注意:大多数情况下你之要添加进来libopencv_core.so和libopencv_highgui.so两个文件,这里我原先也是这样,结果编译之后出现下面的错误:/usr/bin/ld: obj/Debug/main.o||undefined reference to symbol '_ZN2cv6imreadERKNS_6StringEi'|
原因是没有添加libopencv_imgcodecs.so,原因就别管啦.当然你也可以把上面 pkg-config --libs opencv 找到的所有opencv的库文件都添加进来.如下图:
一点提醒:一定要严格按照一开始的两个命令指示的路径来add.
ok,下面是一个简单的demo.cpp.
#include<iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat img=imread("lena.jpg");
namedWindow("风景");
imshow("风景",img);
waitKey(0);
return 0;
}
参考: