一、卸载 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
四、参考:
本文详细介绍如何在Ubuntu系统上卸载旧版本的OpenCV,并安装指定版本的OpenCV及对应的扩展模块。包括卸载步骤、安装依赖、配置与编译过程等关键信息。
3万+

被折叠的 条评论
为什么被折叠?



