ubuntu14.04+cuda7.0+opencv2.4.9

来源:互联网 发布:淘宝网页模板免费下载 编辑:程序博客网 时间:2024/05/21 18:48

安装了ubuntu14.04

分辨率有问题,于是安装英伟达显卡驱动,一个比较简单地方法就是安装Cuda,这里安装的是Cuda7.0版本。

原文地址:http://blog.csdn.net/altenli/article/details/44199539

若需要cuDNN加速的童鞋,可以参考上面的网址安装CUDA6.5


本步骤能实现用Intel核芯显卡来进行显示, 用NVIDIA GPU进行计算。

1. 安装开发所需的依赖包

安装开发所需要的一些基本包

sudo apt-get install build-essential # basic requirementsudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler#required by caffe2. 安装CUDA及驱动2.1 准备工作

在关闭桌面管理 lightdm 的情况下安装驱动似乎可以实现Intel 核芯显卡 来显示 + NVIDIA 显卡来计算。具体步骤如下:

  • 首先在BIOS设置里选择用Intel显卡来显示或作为主要显示设备
  • 进入Ubuntu, 按 ctrl+alt+F1 进入tty, 登录tty后输入如下命令

    sudo service lightdm stop

    该命令会关闭lightdm。如果你使用 gdm或者其他的desktop manager, 请在安装NVIDIA驱动前关闭他。

    2.2 (貌似可以略过)安装NVIDIA显卡驱动

    输入下列命令添加驱动源

    sudo add-apt-repository ppa:xorg-edgers/ppasudo apt-get update

    安装346版驱动

    sudo apt

    安装完成后, 最好把下列包也一并安装上 (否则以后可能会缺少文件)

    sudo apt

    安装完成后 reboot.

    2.3 下载deb包及安装CUDA

    使用deb包安装CUDA及驱动能省去很多麻烦(参见CUDA Starting Guide)。下载对应于你系统的CUDA deb包,
    我下载的是7.0版的,需要先注册才能获得RC版下载权限。
    我下载的是deb包,
    先双击后在Ubuntu Software Center里点install。
    或用下列命令添加软件源

    sudo dpkg -i cuda-repo-<distro>_<version>_<architecture>.deb sudo apt-get update

    然后在终端中用下列命令安装CUDA

    sudo apt-get install cuda

    安装完成后重启电脑.

    sudo reboot2.4 安装cuDNN

    由于还没有出配合CUDA7.0的cuDNN下载,所以暂时不安装cuDNN,以免发生不知名错误。

    2.5 设置环境变量

    安装完成后需要在/etc/profile中添加环境变量, 在文件最后添加:

    export PATH

    保存后, 执行下列命令, 使环境变量立即生效

    source /etc/profile

    同时需要添加lib库路径: 在 /etc/ld.so.conf.d/加入文件 cuda.conf, 内容如下

    /usr/local/cuda/lib64

    保存后,执行下列命令使之立刻生效

    sudo ldconfig

  • 安装完CUDA7.0之后安装opcv2.4.9

    连接地址:http://my.oschina.net/u/1757926/blog/293976

    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    如果能看到照片,那就表示成功了。


    但是出现错误如下:

    make[2]: *** [modules/core/CMakeFiles/cuda_compile.dir/__/dynamicuda/src/cuda/cuda_compile_generated_matrix_operations.cu.o] Error 1
    make[1]: *** [modules/core/CMakeFiles/opencv_core.dir/all] Error 2
    make: *** [all] Error 2

    解决方法:

    (1)依赖包

    只要一安装完Ubuntu12.04LTS,就可以直接运行以下命令,不用多管了就。下载500多M,需要1G的磁盘。

    sudo apt-get install build-essential libgtk2.0-dev libjpeg-dev libtiff4-dev libjasper-dev libopenexr-dev cmake python-dev python-numpy python-tk libtbb-dev libeigen2-dev yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev libqt4-dev libqt4-opengl-dev sphinx-common texlive-latex-extra libv4l-dev libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev libxi-dev libxmu-dev freeglut3-dev

    note that

    (1)libtiff4-dev should be changed into libtiff5-dev in Ubuntu 15.0

    (2) if build with CUDA, then we should add -D CUDA_ARCH_BIN="5.0" where 5.0 is the GPU capability, MUST add 5.0, NOT 5

    (3) if build with CUDA, then "opencv-2.4.9/modules/gpu/src/nvidia/core/NCVPixelOperations.hpp(51): error: a storage class is not allowed in an explicit specialization" error will occur, so we need to replace the file with another one which is in http://blog.csdn.net/altenli/article/details/44199539

    (2)解压OpenCV2.4.2

    生成一个文件叫做OpenCV-2.4.2

    tar -xjvf OpenCV-2.4.2.tar.bz2

    (3)进入OpenCV-2.4.2文件夹

    新建文件夹 build---->进入build文件夹,运行下面的"run:"提示的命令 ---->make ----> sudo make install
    run:
    cmake -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_OPENGL=ON -D WITH_QT=ON -D WITH_CUDA=ON -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local-D CUDA_ARCH_BIN="5.0" ..

    note that we can declare "-D WITH_OPENGL=ON -D WITH_QT=ON -D WITH_CUDA=ON ", but actually wedon't need to declare it  for CUDA or "-D BUILD_JAVA=ON" for java_bindings , as long as there exists CUDA and JAVA+ANT on your mahine, it will automatically build CUDA and JAVA Bindings.  How to build up CUDA and JAVA OpenCV, look my blogs.

    把cuda禁掉,后面标红的删掉,前面cuda=on改为off

    (4)添加库的路径

    sudo gedit /etc/ld.so.conf.d/opencv.conf (这文件在运行gedit之前是没有的) ----〉添加内容 /usr/local/lib到此文件 ---->在终端输入命令sudo ldconfig

    注意:sudo make install 之后原来的那个OpenCV-2.4.2 文件应该没用处了,真正的.h文件在/usr/local/include, .so文件在/usr/local/lib

    (5)设置环境变量

    sudo gedit /etc/bash.bashrc 在文件最后加入下面一行并保存:

    export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig

    注意:为什么要求(4)和(5)?因为是为了让g++/gcc编译器能找到.so和.h文件。怎样找到?在/usr/loca/lib/pkgconfig文件夹里面有一个文件叫做opencv.pv,里面专门说明了这个.h和.so文件在哪里。

    (6)运行

    (6-1)重启Ubuntu或重新登录账户,使得OpenCV安装生效。在一个文件夹,随便哪个文件夹下面touch 一个.cpp文件,用来显示图片。

     1 #include <highgui.h>    2 #include <iostream> 3 using namespace std; 4 int main(int argc,char **argv)   5  {     6  IplImage* image = cvLoadImage(argv[1]);   7  if(argc < 2 || image==NULL)  8         {   9             cout<<"No image data\n";  10             return -1;  11         }12   cvNamedWindow("Display Image",CV_WINDOW_AUTOSIZE);  13   cvShowImage("Display Image",image);14   cvWaitKey(0);15   cvReleaseImage(&image);16   cvDestroyWindow("Display Image");17 return 0;  18 }

     假设此文件叫做showimg.cpp,编译加上运行的话,我们应该这样做:

    g++ -o showimgexe showimg.cpp `pkg-config opencv --cflags --libs`

    这样就会生成一个可运行文件。然后测试:这里后面的是图像, 就是argv[1],都懂得,不用多说。

    ./showimgexe demo.jps

    虽然不多说,但是还是要说下这个pkg-config, 这个命令需要跟一个.pc文件。上面的opencv是/usr/lib/pkgconfig文件夹下面的文件叫做哦opencv.pc。(note that if we install opencv with CUDA, and want also run GPU stuff code, we need add "-L/usr/local/cuda/lib64" in --LIBs flags)如果这个文件叫chase.pc那么应该改为pkg-config chase --cflags --libs。 这里的--cflags指明编译过程需要的头文件去哪里找, --libs指明连接过程中so文件去哪里找。那去哪里找?看文件opencv.pc本身就知道了。还有这个命令之外的引号的问题:不是"",不是'',是``!!!!尼玛是不是很坑爹。``值的是ESC键下面那个键,就在Tab上面。

     还有一点想说的是:一旦这个showimgexe生成,随便在那个文件夹下都可以运行了。当然必须是在自己的主机上,其他机器根本没安装opencv你想运行那是不可能的。

    注:

    我们可以将这个showimgexe文件放在一个$PATH变量文件夹下面。

    比如我自己增加一个PATH变量:额,PATH变量就是文件夹嘛哎呀。

    vim ~/.bashrc

    然后在最后加入export PATH=/home/chase/ticker/bin:PATHechoPATH,查看是否成功。

    (6-2)Codelocks链接OpenCV:  http://blog.csdn.net/cenziboy/article/details/7570139

    (7)卸载 OpenCV

    into the build file and run: sudo make uninstall


    0 0
    原创粉丝点击