Ubuntu16.04卸载opencv 3.0.0,安装opencv3.4.2 + contrib

原文链接: https://blog.csdn.net/haoqimao_hard/article/details/82049565

 

一、卸载 opencv3.0.0

1、查看已安装的 opencv 版本

pkg-config --modversion opencv

2、卸载

     找到当初安装 opencv3.0.0 的 build 目录,进入 build 目录

    cd /home/***/opencv/build
    sudo make uninstall
    cd  ..
    sudo rm -r build

在我的电脑中,不加 sudo 无法完全移除,于是自己做了一点改动( 将教程中的 rm -r build 改成了 sudo rm -r build)

如果找不到 build 目录,可以重新建立 build 目录安装对应版本,再执行卸载步骤。

然后清理 /usr 中所有 opencv 相关项

    sudo rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2 /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv /usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv*
    cd /usr
    find . -name "*opencv*" | xargs sudo rm -rf
     
    cd /home/***
    chmod a+x /home/***/opencv
    rm -r /home/***/opencv

移除 python 相关(我没有成功,就直接跳过这一步了)

apt-get remove-doc opencv-data python-opencv

二、安装 opencv3.4.2 + opencv contrib

1、下载 opencv3.4.2  以及 opencv contrib3.4.2

2、安装依赖项

    sudo apt-get install build-essential
    sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
    sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

3. 将下载好的 opencv3.4.2 文件解压,我复制到了 home 目录下,重命名为 opencv

如果要同时安装 opencv_contrib,将 opencv_contrib3.4.2 文件提取,复制到 opencv 目录下一个名为 opencv_contrib 的文件夹中,在 opencv 目录下新建一个文件夹build,进入build目录,执行 cmake 生成 makefile 文件

    cd ~/opencv/build
    cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=~/opencv/opencv_contrib/modules/ ..

如果不安装 opencv_contrib ,则第二步命令改为:

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local

其中,

/usr/local 是指默认将要 install 的路径

 OPENCV_EXTRA_MODULES_PATH=~/opencv/opencv_contrib/modules/ .. 是指 opencv_contrib3.4.2 中 modules所在的路径,后面的两点不可省略

3、安装

    sudo make
    sudo make install

4、查看新版本,已经变成3.4.2了

三、教程里一个KCF跟踪的小例程, 验证自己的opencv和opencv_contrib是否安装成功

1、在自己想要的任何位置新建一个用于放例程文件夹:kcf_demo

2、新建一个简单的main.cpp文件

 这里需要我改动了两个地方,不然运行会报错:

VideoCapture cap(1); 中的1改成 0

Ptr<Tracker> tracker = Tracker::create("KCF");  改成 Ptr<Tracker> tracker = TrackerKCF::create();  

    #include <opencv2/core/utility.hpp>
    #include <opencv2/tracking.hpp>
    #include <opencv2/videoio.hpp>
    #include <opencv2/highgui.hpp>
    #include <iostream>
    #include <cstring>
     
    using namespace std;
    using namespace cv;
     
    int main() {  
        // declares all required variables  
        //! [vars]  
        Rect2d roi;  
        Mat frame;  
        //! [vars]  
      
        // create a tracker object  
        Ptr<Tracker> tracker = TrackerKCF::create();  
        //! [create]  
      
        // set input video  
        //! [setvideo]
        //std::string video = "/home/***/kcfDemo/demo1/test.mkv";  
        //VideoCapture cap(video);
        VideoCapture cap(0);
        //! [setvideo]
      
        // get bounding box  
        //! [getframe]  
        cap >> frame;  
        //! [getframe]  
        //! [selectroi]选择目标roi以GUI的形式
        if(!frame.empty()){
            roi=selectROI("tracker",frame);
        }  
        //! [selectroi]  
      
        //quit if ROI was not selected  
        if (roi.width == 0 || roi.height == 0)  
            return 0;  
      
        // initialize the tracker  
        //! [init]  
        tracker->init(frame, roi);  
        //! [init]  
      
        // perform the tracking process  
        printf("Start the tracking process\n");  
        for (;; ) {  
            // get frame from the video  
            cap >> frame;  
            // stop the program if no more images  
            if (frame.rows == 0 || frame.cols == 0)  
                break;  
      
            // update the tracking result  
            //! [update]  
            tracker->update(frame, roi);  
            //! [update]  
      
            //! [visualization]  
            // draw the tracked object  
            rectangle(frame, roi, Scalar(255, 0, 0), 2, 1);  
      
            // show image with the tracked object
            if(!frame.empty()){
                imshow("tracker",frame);
        }  
            //! [visualization]  
            //quit on ESC button  
            if (waitKey(1) == 27)  
                break;  
        }  
      
        return 0;  
    }

不作实时跟踪,而需要用视频文件时,把  VideoCapture cap(0); 注释掉,取消  VideoCapture cap(video); 的注释即可,亲测 avi,mkv,mp4格式均可

3、在main.cpp同一文件夹下创建一个CMakeLists.txt文件

    cmake_minimum_required(VERSION 3.0)
    PROJECT(kfcDemo1)
    SET(SRC_LIST main.cpp)
    find_package(OpenCV 3.4 REQUIRED)
    include_directories(${OpenCV_INCLUDE_DIRS})
    ADD_EXECUTABLE(demo1 ${SRC_LIST})
    target_link_libraries(demo1 ${OpenCV_LIBS})

其中,

find_package(OpenCV 3.4 REQUIRED)是搜索opencv 3.4 的包

include_directories(${OpenCV_INCLUDE_DIRS})是定义opencv的包含目录所在的位置

target_link_libraries(demo1 ${OpenCV_LIBS})是链接opencv的库

4、编译

    mkdir build
    cd build
    cmake ..
    make

得到了一个小程序demo1,可以直接调用看看效果:

./demo1

四、参考:

Ubuntu16.04卸载其他版本的opencv并安装opencv3.2.0+opencv contrib3.2.0

Ubuntu16.04 上openCV的卸载与 opencv3.0.2安装记录  
---------------------  
作者:haoqimao_hard  
来源:CSDN  
原文:https://blog.csdn.net/haoqimao_hard/article/details/82049565  
版权声明:本文为博主原创文章,转载请附上博文链接!

展开阅读全文

没有更多推荐了,返回首页