修订记录
2012.11.20修订OpenCV 2.4+在CentOS安装方法。
2012.11.21添加OpenCV 2的打开图片的写法。
预备
GCC
CMake
OpenCV
这些都可以在CentOS 6.0的“添加/删除软件”里面找到并安装。其他Linux版本可以选择用编译后安装或者在Rpmfind寻找二进制安装版本:
CentOS安装OpenCV 2.4+
下载OpenCV 2.4+压缩包解压到一个文件夹里,如:/home/me/opencv/
构建Makefile,在终端输入,进行构建:
cd /home/me/opencv/
cmake .
进行编译并安装,编译过程可能有些警告发生,请无视这些警告:
make
make check
make install
写一个OpenCV程序
新建一个简单的程序,例如:DisplayImage.cpp。
#include #include#include
//使用cv这个命名空间
using namespacecv;/*主函数
*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
using namespacecv;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 cmake .
make
结果
生成了一个DisplayImage文件,所以运行这个文件,将文件路径传进去:
./DisplayImage lena.jpg
你就能看到图片了:
被山寨的原文