网上虽然有比较详细的教程,但自己在按照别人的方法一步步进行时,还是出现了很多问题,如:
1,g++ -o hello hello.cpp 'pkg-config --cfalgs --libs'与g++ 'pkg-config --cfalgs --libs‘ hello.cpp -o hello 连接库顺序的问题
采用g++ 'pkg-config --cfalgs --libs‘ hello.cpp -o hello 会产生opencv函数为定义的问题:
undefined reference to `cv::namedWindow(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)'
hello.cpp:(.text+0x9b): undefined reference to `cv::imread(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)'
采用g++ -o hello hello.cpp 'pkg-config --cfalgs --libs'则正常编译
2,注意要安装所需要的软件包,下面参考文章里很详细,用 sudo apt-get install 命令一个个安上就可以了
3,没弄清楚opencv安装位置
因为第一此用ubuntu系统,配置opencv基本上按照教程一步步进行的,具体什么意思和用途并不了解,折腾了一天解决了出现的问题后,基本上理解了opencv的配置,也学会了很多linux的知识。回到话题,opencv 的安装位置在/usr/local,那里可以找到opencv和opencv2这两个文件夹
4,/usr/etc和/home/etc是不一样的,usr主要是系统文件配置,而/hom则是对用户文件的配置
测试程序
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
using namespace std;
int main()
{
namedWindow( "src");
Mat img = imread( "/home/xinliwei/lena.jpg" );
if(!img.data) {
cout<<"file not fount"<<endl;
return 1;
}
else {
imshow( "src", img );
waitKey();
return 0;
}
}
具体配置步骤如参考教程:1,http://www.samontab.com/web/2010/04/installing-opencv-2-1-in-ubuntu/
2,http://www.cnblogs.com/emouse/archive/2013/02/22/2922940.html