ubuntu14.04中安装opencv2.4.9

1. 先从sourceforge上下载OpenCV的源码

  1. http://jaist.dl.sourceforge.net/project/opencvlibrary/opencv-unix/2.4.9/opencv-2.4.9.zip


2. 解压到任意目录

  1. unzip opencv-2.4.9.zip

3. 进入源码目录,创建release目录

  1. cd opencv-2.4.9

  2. mkdir release  

4. 可以看到在OpenCV目录下,有个CMakeLists.txt文件,需要事先安装一些软件

  1. sudo apt-get install build-essential cmake libgtk2.0-dev pkg-config python-dev python-numpy libavcodec-dev libavformat-dev libswscale-dev 

5.  进入release目录,安装OpenCV是所有的文件都会被放到这个release目录下

  1. cd release  

6. cmake编译OpenCV源码,安装所有的lib文件都会被安装到/usr/local目录下

  1. cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..  


7. 安装


  1. sudo make install  


8. 测试,在某个目录下建立一个test.cpp文件

#include <cv.h>  
#include <highgui.h>  
 
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", CV_WINDOW_AUTOSIZE);  
    imshow("Display Image", image);  
    waitKey(0);  
    return 0;  
}


9. 写一个cmake的makefile,也叫CMakeLists.txt

project(test)  
find_package(OpenCV REQUIRED)  
add_executable(test test)  
target_link_libraries(test ${OpenCV_LIBS})  
cmake_minimum_required(VERSION 2.8)

10. 编译+运行

  1. cmake .  

  2. make  

  3. 得到可执行文件test

11.  随便弄个jpg图片做个测试,注意要和上面那个可执行文件放在同一目录下面,我这里名字取的是test.jpg。

12.    ./test   test.jpg    如果能看到照片,那就表示成功了。


13.注意编译报错:

编译安装了openCV,现在在/usr/share/include 目录下有opencv 和opencv2两个文件夹

第一次用g++ DisplayImage.cpp -o DisplayImage  使命编译,提示没有 cv.h 这个文件
然后网上有人说用 g++ `pkg-config opencv --libs --cflags opencv` DisplayImage.cpp -o DisplayImage 命令,但是出现了下面的错误
好像是命名空间的问题,求解决方法。

/tmp/cc1ounoJ.o: In function `main':
DisplayImage.cpp:(.text+0x6c): undefined reference to `cv::imread(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)'
DisplayImage.cpp:(.text+0x10c): undefined reference to `cv::namedWindow(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)'
DisplayImage.cpp:(.text+0x13a): undefined reference to `cv::_InputArray::_InputArray(cv::Mat const&)'
DisplayImage.cpp:(.text+0x16e): undefined reference to `cv::imshow(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&)'
DisplayImage.cpp:(.text+0x190): undefined reference to `cv::waitKey(int)'
/tmp/cc1ounoJ.o: In function `cv::Mat::~Mat()':
DisplayImage.cpp:(.text._ZN2cv3MatD2Ev[_ZN2cv3MatD5Ev]+0x39): undefined reference to `cv::fastFree(void*)'
/tmp/cc1ounoJ.o: In function `cv::Mat::operator=(cv::Mat const&)':
DisplayImage.cpp:(.text._ZN2cv3MataSERKS0_[cv::Mat::operator=(cv::Mat const&)]+0x111): undefined reference to `cv::Mat::copySize(cv::Mat const&)'
/tmp/cc1ounoJ.o: In function `cv::Mat::release()':
DisplayImage.cpp:(.text._ZN2cv3Mat7releaseEv[cv::Mat::release()]+0x47): undefined reference to `cv::Mat::deallocate()'
collect2: ld 返回 1


g++ `pkg-config opencv --cflags --libs opencv` -o DisplayImage DisplayImage.cpp -I /usr/local/include/opencv -L /usr/local/lib -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_gpu -lopencv_ts -lopencv_video -lopencv_objdetect -lopencv_ml -lpthread
我用这个OK的~


14.注意运行报错:
程序运行出现error while loading shared libraries: libopencv_highgui.so.2.4 错误,是opencv的库路径没有设置好。


参考:http://wenku.baidu.com/link?url=3GwCKjVbDJn4o8jpPWG4Uljqplh_rKVF6-a6SIrSR7axoq-cimkx7L8ZZUnfLzyURYTYhh7XxSLSM6UTvXOK7of9P7Bp_Ht2R5mgAhaKpZG


 接下来要给系统加入opencv库的环境变量(也就是库存放的路径,注意不是解压路径)
     用vim打开/etc/ld.so.conf,注意要用sudo打开获得权限,不然无法修改,如:sudo vim /etc/ld.so.conf,在文件中加上一行 /usr/loacal/lib,/user/loacal是opencv安装路径 就是makefile中指定的安装路径
     再运行sudo ldconfig,
     修改bash.bashrc文件,sudo gedit /etc/bash.bashrc
     在文件末尾加入:
     PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
     export PKG_CONFIG_PATH


然后source /etc/bash.bashrc


可以正常运行了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值