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

本文详细介绍如何在Ubuntu系统上卸载旧版本的OpenCV,并安装指定版本的OpenCV及对应的扩展模块。包括卸载步骤、安装依赖、配置与编译过程等关键信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、卸载 opencv3.0.0

1、查看已安装的 opencv 版本

pkg-config --modversion opencv

2、卸载

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

 
  1. cd /home/***/opencv/build

  2. sudo make uninstall

  3. cd ..

  4. sudo rm -r build

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

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

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

 
  1. 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*

  2. cd /usr

  3. find . -name "*opencv*" | xargs sudo rm -rf

  4.  
  5. cd /home/***

  6. chmod a+x /home/***/opencv

  7. 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、安装依赖项

 
  1. sudo apt-get install build-essential

  2. sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

  3. 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 文件 

 
  1. cd ~/opencv/build

  2. 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、安装

 
  1. sudo make

  2. 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();  

 
  1. #include <opencv2/core/utility.hpp>

  2. #include <opencv2/tracking.hpp>

  3. #include <opencv2/videoio.hpp>

  4. #include <opencv2/highgui.hpp>

  5. #include <iostream>

  6. #include <cstring>

  7.  
  8. using namespace std;

  9. using namespace cv;

  10.  
  11. int main() {

  12. // declares all required variables

  13. //! [vars]

  14. Rect2d roi;

  15. Mat frame;

  16. //! [vars]

  17.  
  18. // create a tracker object

  19. Ptr<Tracker> tracker = TrackerKCF::create();

  20. //! [create]

  21.  
  22. // set input video

  23. //! [setvideo]

  24. //std::string video = "/home/***/kcfDemo/demo1/test.mkv";

  25. //VideoCapture cap(video);

  26. VideoCapture cap(0);

  27. //! [setvideo]

  28.  
  29. // get bounding box

  30. //! [getframe]

  31. cap >> frame;

  32. //! [getframe]

  33. //! [selectroi]选择目标roi以GUI的形式

  34. if(!frame.empty()){

  35. roi=selectROI("tracker",frame);

  36. }

  37. //! [selectroi]

  38.  
  39. //quit if ROI was not selected

  40. if (roi.width == 0 || roi.height == 0)

  41. return 0;

  42.  
  43. // initialize the tracker

  44. //! [init]

  45. tracker->init(frame, roi);

  46. //! [init]

  47.  
  48. // perform the tracking process

  49. printf("Start the tracking process\n");

  50. for (;; ) {

  51. // get frame from the video

  52. cap >> frame;

  53. // stop the program if no more images

  54. if (frame.rows == 0 || frame.cols == 0)

  55. break;

  56.  
  57. // update the tracking result

  58. //! [update]

  59. tracker->update(frame, roi);

  60. //! [update]

  61.  
  62. //! [visualization]

  63. // draw the tracked object

  64. rectangle(frame, roi, Scalar(255, 0, 0), 2, 1);

  65.  
  66. // show image with the tracked object

  67. if(!frame.empty()){

  68. imshow("tracker",frame);

  69. }

  70. //! [visualization]

  71. //quit on ESC button

  72. if (waitKey(1) == 27)

  73. break;

  74. }

  75.  
  76. return 0;

  77. }

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

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

 
  1. cmake_minimum_required(VERSION 3.0)

  2. PROJECT(kfcDemo1)

  3. SET(SRC_LIST main.cpp)

  4. find_package(OpenCV 3.4 REQUIRED)

  5. include_directories(${OpenCV_INCLUDE_DIRS})

  6. ADD_EXECUTABLE(demo1 ${SRC_LIST})

  7. 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、编译

 
  1. mkdir build

  2. cd build

  3. cmake ..

  4. make

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

./demo1

四、参考:

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

Ubuntu16.04 上openCV的卸载与 opencv3.0.2安装记录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值