修订记录 函数
- 2012.11.20修订OpenCV 2.4+在CentOS安装方法。
- 2012.11.21添加OpenCV 2的打开图片的写法。
预备 ui
- GCC
- CMake
- OpenCV
这些均可以在CentOS 6.0的“添加/删除软件”里面找到并安装。其余Linux版本能够选择用编译后安装或者在Rpmfind寻找二进制安装版本: spa
http://rpmfind.net/ .net
CentOS安装OpenCV 2.4+ code
cd /home/me/opencv/ blog
cmake . 图片
make get
make check string
make install it
写一个OpenCV程序
新建一个简单的程序,例如:DisplayImage.cpp。
#include <stdio.h> #include <cv.h> #include <highgui.h> //使用cv这个命名空间 using namespace cv; /* 主函数 *C语言规定main函数只能有两个参数, *习惯上将这两个参数写成argc和argv。 *第一个表明(传参个数+1), *第二个表明传惨数据。 *通常有两种写法: *main( int argc, char* argv[]) *main( int argc, char** argv) */ int main( int argc, char** argv ) { //创建一个Mat类型的变量image Mat image; /* API中有: * C++: Mat imread(const string& filename, int flags=1 ) * 意思是返回Mat类型数据,第一个参数接受一个string类型的引用, * 第二个参数接受一个int类型的flags,通常都是1。 */ image = imread( argv[1], 1 ); //当传的参数不是一个,或者图片没有数据则提示没有图片并退出程序 if( argc != 2 || !image.data ) { printf( "没有该图片 \n" ); return -1; } //C++: void namedWindow(const string& winname, int flags=CV_WINDOW_AUTOSIZE ) namedWindow( "显示图片", CV_WINDOW_AUTOSIZE ); //C++: void imshow(const string& winname, InputArray mat) imshow( "显示图片", image ); //C++: int waitKey(int delay=0) waitKey(0); return 0; }
新的头文件写法
一样的程序,能够用新的头文件写法来写:
#include "opencv2/core/core.hpp" #include "opencv2/highgui/highgui.hpp" #include <stdio.h> using namespace cv; int main( int argc, char** argv ){ Mat image; image = imread( argv[1]); if( argc != 2 || !image.data ){ printf("没有图片\n"); return -1; } namedWindow( "显示图片", CV_WINDOW_AUTOSIZE ); imshow( "显示图片", image ); waitKey(0); return 0; }
建立一个对应的CMake文件
新建一个CMakeLists.txt,内容大概是这样的:
project( DisplayImage ) find_package( OpenCV REQUIRED ) add_executable( DisplayImage DisplayImage ) target_link_libraries( DisplayImage ${OpenCV_LIBS} )
生成可执行文件
cd <DisplayImage_directory> cmake . make
结果
生成了一个DisplayImage文件,因此运行这个文件,将文件路径传进去:
./DisplayImage lena.jpg
你就能看到图片了: