首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Ubuntu20.04安装opencv4.2.0 && opencv4.10.0 一文详细介绍安装步骤(带图)及报错解决

  • 25-04-24 21:01
  • 3011
  • 8338
blog.csdn.net

文章目录

  • 一、apt 软件包安装(opencv4.2.0推荐)
  • 二、源码安装(opencv4.10.0高版本)
    • 2.0 安装依赖环境
    • 2.1 编译安装
    • 2.2 报错解决
    • 2.3 添加环境变量
    • 2.4 版本验证
    • 2.5 卸载opencv
  • 三、配置c++/opencv开发环境

推荐Linux其他软件安装:
Ubuntu/Debian小白从零开始配置深度学习环境和各种软件库(显卡驱动、CUDA、CUDNN、Pytorch、OpenCv、PCL、Cmake …)【持续维护】

一、apt 软件包安装(opencv4.2.0推荐)

使用apt安装方式,比较简单,但是版本不是最新的,一般Ubuntu20.04对应Opencv4.2.0,Ubuntu22.04对应Opencv4.6.0。
具体查看下系统软件包里面opencv的版本

apt search libopencv-dev
  • 1

sudo apt-get update
# 安装依赖
sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
# 直接一键安装
sudo apt-get install libopencv-dev
  • 1
  • 2
  • 3
  • 4
  • 5

如果没有版本要求限制,此种安装方法比较快捷方便。

二、源码安装(opencv4.10.0高版本)

2.0 安装依赖环境

如果安装过程中,缺少什么安装什么

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

2.1 编译安装

Opencv官方源码下载地址:opencv源码 和 opencv_contrib扩展 一般源码安装次一点的最新版。

#git clone https://github.com/opencv/opencv.git
#cd opencv
#git checkout   # 替换为你想要安装的OpenCV版本号,例如:4.10.0
cd opencv-4.10.0/
mkdir build && cd build
  • 1
  • 2
  • 3
  • 4
  • 5
cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=ON -D CMAKE_INSTALL_PREFIX=/usr/local -DBUILD_TIFF=ON -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.10.0/modules ..
  • 1
#cmake结束后,编译安装 编译安装时候确定没有其他进程打开
#或者 终端输入nproc命令查看电脑线程数。假如有8个,使用6个编译
sudo make -j6
#安装
sudo make install
  • 1
  • 2
  • 3
  • 4
  • 5

cmake里面的参数,重点关注这几个就OK

参数含义
-D CMAKE_INSTALL_PREFIX=/usr/local指定安装目录为/usr/local
-D OPENCV_GENERATE_PKGCONFIG=ON生成.pc文件,使其他程序可以使用OpenCV库
-D OPENCV_EXTRA_MODULES_PATH=…/…/opencv_contrib-4.10.0/modules/指定OpenCV额外模块的路径
-D BUILD_EXAMPLES=OFF禁用编译OpenCV示例程序

2.2 报错解决

一般在sudo make 时会出现各种错误;结合网上教程和自己错误现在总结下。

问题一:与anaconda3的动态链接库指向版本冲突
现象:/usr/bin/ld: /lib/x86_64-linux-gnu/libwayland-client.so.0: undefined reference to `ffi_type_uint32@LIBFFI_BASE_7.0’,以后遇见 xxx.so: undefined reference to xxx 基本上都是系统与软件链接器冲突,把链接器指向改过来就行。

与问题一样: anaconda3/lib/libQt5X11Extras.so.5: undefined reference to `qt_version_tag@Qt_5.15’ anaconda 与系统默认的冲突
原因: 既然是qt_version_tag的问题,说明是qmake的版本不兼容导致,即当前QT使用的qmake和系统实际指定的qmake版本不一致。查看系统默认的qmake版本,一般来说是系统与anaconda中的lib版本冲突。其实问题本质是anaconda3与系统默认路径库文件版本冲突原因

qmake -version
dpkg -l | grep qt5  
  • 1
  • 2


解决方法一: 退出当前环境

conda deactivate
  • 1

解决方法二: 在使用编译的CMakeLists.txt文件里面添加一句话,让其指定搜索路径【推荐】

SET(CMAKE_PREFIX_PATH "/usr/lib/x86_64-linux-gnu/cmake")
  • 1

添加这句话,其他的库文件也会在系统目录里面寻找;记得删除build里面所有建的环境,再次编译通过。

sudo make clean
  • 1

解决方法三: 把有关anaconda3的配置环境注释掉

gedit ~/.bashrc
# 注释以下内容
# __conda_setup="$('/home/xjc/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
# if [ $? -eq 0 ]; then
#     eval "$__conda_setup"
# else
#     if [ -f "/home/xjc/anaconda3/etc/profile.d/conda.sh" ]; then
#         . "/home/xjc/anaconda3/etc/profile.d/conda.sh"
#     else
#         export PATH="/home/xjc/anaconda3/bin:$PATH"
#     fi
# fi
# unset __conda_setup
source ~/.bashrc
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

安装完后,再把注释改回来

解决方法四: 在CMakeLists.txt设置单独版本查找路径

find_package(Qt5 5.15 REQUIRED)
  • 1

解决方法五: 重新把库文件链接到指定需要的文件

sudo apt-get install locate
# 使用命令ldd定位libwayland-client.so.0当中,所依赖的ffi库
$ ldd /lib/x86_64-linux-gnu/libwayland-client.so.0 | grep ffi
  • 1
  • 2
  • 3

在这里插入图片描述
查看下anaconda3/lib/和 /usr/lib/x86_64-linux-gnu/ 对应得库版本是否一致 ,如果不一样则修改

locate libffi.so.7
# 查看系统的libffi
ll /lib/x86_64-linux-gnu/ | grep ffi
# 查看Anaconda的libffi
ll ~/anaconda3/lib/ | grep ffi
  • 1
  • 2
  • 3
  • 4
  • 5



我们看到两个库不一样,一个是7.1.0,一个是8.1.2 ,因此把anaconda下的libffi.so.7指向系统的7.1.0

cd ~/anaconda3/lib/lib
sudo rm libffi.so.7
sudo ln -s /lib/x86_64-linux-gnu/libffi.so.7.1.0 libffi.so.7
#再次查看
ll ~/anaconda3/lib/ | grep ffi
  • 1
  • 2
  • 3
  • 4
  • 5

2.3 添加环境变量

cmake时候打开了 OPENCV_GENERATE_PKGCONFIG,在系统/usr/local/lib/pkgconfig下自动生成了opencv4.pc文件,里面记录了OpenCV头文件、库文件的路径。

类似于:

nano ~/.bashrc
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
#若上面没用
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opencv4.10/opencv-4.10.0/build/lib
# 添加完后 先Ctrl+O保存,按Enter确定,再Ctrl+X退出nano编辑器
# 更新环境变量配置文件
source ~/.bashrc
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2.4 版本验证

1、查看安装情况

#终端输入以下两命令,显示正常则安装成功
pkg-config --modversion opencv4 #查看版本号
pkg-config --libs opencv4 #查看libs库
  • 1
  • 2
  • 3

2、程序测试

cd ~/opencv-4.10.0/samples/cpp/example_cmake
mkdir build
cd ./build
cmake ..
make
./opencv_example
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2.5 卸载opencv

cd opencv-4.10.0/build/
#删除可执行文件、lib文件、头文件等
sudo make uninstall
#删除空的文件夹
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*
#删除cmake相关文件
sudo make clean
#删除所有
sudo rm rf *
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

三、配置c++/opencv开发环境

使用CMakeLists.txt配置opencv。

cmake_minimum_required(VERSION 3.10)  # 指定 cmake的 最小版本
project(demo) # 设置项目名称
#set(OpenCV_DIR /usr/local/lib/cmake/opencv4)
find_package(OpenCV REQUIRED)
INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS})
add_executable(demo main.cpp) # 生成可执行文件
target_link_libraries(demo ${OpenCV_LIBS} ) # 设置target需要链接的库
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
注:本文转载自blog.csdn.net的AI坤哥哥的文章"https://blog.csdn.net/qq_61812715/article/details/146041508"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top