美文网首页
在ubuntu14.04下安装opencv,pcl

在ubuntu14.04下安装opencv,pcl

作者: 凌玥君 | 来源:发表于2017-04-15 14:08 被阅读0次

    在Ubuntu14.04下安装opencv3.1.0和pcl库

    安装pcl

    安装pcl库较为简单
    在终端输入以下代码即可

    sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pcl
    sudo apt-get update
    sudo apt-get install libpcl-all
    

    若是第三步出现无法找到包的问题,可能是网络连接问题,从第一步再开始即可。
    之后,可检查pcl库的安装。输入:

    sudo updatebd
    locate pcl
    

    PCL 的头文件将安装在/usr/include/pcl-1.7 中,库文件位于/usr/lib/中

    安装opencv3.1.0

    首先下载opencv3.1.0的源码: https://github.com/Itseez/opencv/archive/3.1.0.zip
    编译之前,需要安装opencv的依赖项

    sudo apt-get install build-essential libgtk2.0-dev libvtk5-dev libjpeg-dev libtiff4-dev libjasper-dev libopenexr-dev libtbb-dev
    

    之后进入源码的文件夹进行编译

    cd ~/opencv  #源码的文件夹路径
    mkdir build
    cd build
    cmake ..
    make
    

    最后,不仅仅是编译,还需要安装它

    sudo make install
    

    测试代码:
    在kdevelop中打开工程,找到cmakelist.txt和cpp文件的目录,
    选中cmakelist.txt进行编译

    cmake_minimum_required( VERSION 2.8 )
    project( imageBasics )
    
    # 添加c++ 11标准支持
    set( CMAKE_CXX_FLAGS "-std=c++11" )
    
    # 寻找OpenCV库
    find_package( OpenCV REQUIRED )
    # 添加头文件
    include_directories( ${OpenCV_INCLUDE_DIRS} )
    
    add_executable( imageBasics imageBasics.cpp )
    # 链接OpenCV库
    target_link_libraries( imageBasics ${OpenCV_LIBS} )
    

    显示图像程序imageBasics.cpp

    #include <iostream>
    #include <chrono>
    using namespace std;
    
    #include <opencv2/core/core.hpp>
    #include <opencv2/highgui/highgui.hpp>
    
    int main ( int argc, char** argv )
    {
        // 读取argv[1]指定的图像
        cv::Mat image;
        image = cv::imread ( argv[1] ); //cv::imread函数读取指定路径下的图像
        // 判断图像文件是否正确读取
        if ( image.data == nullptr ) //数据不存在,可能是文件不存在
        {
            cerr<<"文件"<<argv[1]<<"不存在."<<endl;
            return 0;
        }
        
        // 文件顺利读取, 首先输出一些基本信息
        cout<<"图像宽为"<<image.cols<<",高为"<<image.rows<<",通道数为"<<image.channels()<<endl;
        cv::imshow ( "image", image );      // 用cv::imshow显示图像
        cv::waitKey ( 0 );                  // 暂停程序,等待一个按键输入
        // 判断image的类型
        if ( image.type() != CV_8UC1 && image.type() != CV_8UC3 )
        {
            // 图像类型不符合要求
            cout<<"请输入一张彩色图或灰度图."<<endl;
            return 0;
        }
    
        // 遍历图像, 请注意以下遍历方式亦可使用于随机像素访问
        // 使用 std::chrono 来给算法计时
        chrono::steady_clock::time_point t1 = chrono::steady_clock::now();
        for ( size_t y=0; y<image.rows; y++ )
        {
            for ( size_t x=0; x<image.cols; x++ )
            {
                // 访问位于 x,y 处的像素
                // 用cv::Mat::ptr获得图像的行指针
                unsigned char* row_ptr = image.ptr<unsigned char> ( y );  // row_ptr是第y行的头指针
                unsigned char* data_ptr = &row_ptr[ x*image.channels() ]; // data_ptr 指向待访问的像素数据
                // 输出该像素的每个通道,如果是灰度图就只有一个通道
                for ( int c = 0; c != image.channels(); c++ )
                {
                    unsigned char data = data_ptr[c]; // data为I(x,y)第c个通道的值
                }
            }
        }
        chrono::steady_clock::time_point t2 = chrono::steady_clock::now();
        chrono::duration<double> time_used = chrono::duration_cast<chrono::duration<double>>( t2-t1 );
        cout<<"遍历图像用时:"<<time_used.count()<<" 秒。"<<endl;
    
        // 关于 cv::Mat 的拷贝
        // 直接赋值并不会拷贝数据
        cv::Mat image_another = image;
        // 修改 image_another 会导致 image 发生变化
        image_another ( cv::Rect ( 0,0,100,100 ) ).setTo ( 0 ); // 将左上角100*100的块置零
        cv::imshow ( "image", image );
        cv::waitKey ( 0 );
        
        // 使用clone函数来拷贝数据
        cv::Mat image_clone = image.clone();
        image_clone ( cv::Rect ( 0,0,100,100 ) ).setTo ( 255 );
        cv::imshow ( "image", image );
        cv::imshow ( "image_clone", image_clone );
        cv::waitKey ( 0 );
    
        // 对于图像还有很多基本的操作,如剪切,旋转,缩放等,限于篇幅就不一一介绍了,请参看OpenCV官方文档查询每个函数的调用方法.
        cv::destroyAllWindows();
        return 0;
    }
    

    并输入指令 ../ubuntu.png (..指的是上一目录)
    在终端内调用:(ubuntu.png在build的目录下)

    cd /home/kll/slam/ch5/imageBasics/build
    ./imageBasics ubuntu.png  
    
    

    (若ubuntu.png在build的上一目录下)

    ./imageBasics ../ubuntu.png
    

    相关文章

      网友评论

          本文标题:在ubuntu14.04下安装opencv,pcl

          本文链接:https://www.haomeiwen.com/subject/okbnattx.html