网站首页 > 技术文章 正文
引子
本来以为在 Ubuntu 上安装 opencv 很简单,没有想到折腾了一下午。
想到其他同学可能会遇到类似的问题,因此把过程和坑记录下来。
概述
OpenCV 是用于计算机视觉和机器学习应用的强大库。安装最新版本,如 4.9.0,有时可能会遇到挑战,特别是在处理系统依赖和配置时。
初始设置
- 依赖安装:在开始安装之前,需要安装必要的依赖:
sudo apt update sudo apt install -y build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt install -y libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev sudo apt install -y libv4l-dev v4l-utils qv4l2 v4l2ucp sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev sudo apt install -y libxvidcore-dev libx264-dev x264 sudo apt install -y python3-dev python3-numpy
- 克隆 OpenCV 和 OpenCV Contrib 仓库:
mkdir ~/opencv_build && cd ~/opencv_build
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
- 检出所需版本(4.9.0):
cd opencv git checkout 4.9.0 cd ../opencv_contrib git checkout 4.9.0
配置和编译
- 使用 CMake 配置: 在 opencv 文件夹中创建一个构建目录,然后使用 cmake 配置构建:
cd ~/opencv_build/opencv mkdir build && cd build cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_C_EXAMPLES=ON \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D WITH_TBB=ON \ -D WITH_V4L=ON \ -D WITH_QT=OFF \ -D WITH_OPENGL=ON \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_build/opencv_contrib/modules \ -D BUILD_EXAMPLES=ON ..
- 使用 make 构建:
make -j$(nproc) sudo make install
遇到的挑战和解决方案
- CMake 未找到 CMakeLists.txt:
最初,cmake 由于路径指定不正确而无法找到 CMakeLists.txt 文件。通过确保在正确的目录层次结构中运行命令解决了此问题。 - 与 Anaconda 的 Python 冲突:
在构建过程中遇到了使用 Anaconda 的 Python 解释器的问题,导致配置和链接问题。通过在 CMake 配置中明确指定系统 Python 路径,并临时修改 PATH 环境变量以排除 Anaconda 路径来解决。 - 链接错误:
由于 Anaconda 库的链接错误,例如 libgio-2.0.so.0,阻碍了构建过程。通过在构建过程中排除 Anaconda 库路径并确保 cmake 使用系统库解决。
安装后的设置
- 环境设置: 更新 LD_LIBRARY_PATH 以包括新安装的 OpenCV 库的路径:
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
- 验证安装: 通过检查 OpenCV 的版本来验证安装是否正确:
python3 -c "import cv2; print(cv2.__version__)"
结论
本指南详细介绍了在 Ubuntu 22 上安装 OpenCV 4.9.0 的步骤,详细说明了常见的问题
猜你喜欢
- 2024-09-11 给3D Slicer添加Python第三方插件库
- 2024-09-11 使用Python创建自己的Instagram滤镜
- 2024-09-11 薅羊毛我愿称Python为最强,Python 自动化带你轻松赚钱
- 2024-09-11 史上最全的OpenCV入门教程!这篇够你学习半个月了!万字长文入门
- 2024-09-11 使用python实现简易的人脸检测(python人脸检测106关键点)
- 2024-09-11 机器视觉技术(一)边缘提取(机器视觉边缘检测)
- 2024-09-11 Python-OpenCV 16. 图像特征检测与描述算法
- 2024-09-11 Flask—远程查看行空板USB摄像头视频
- 2024-09-11 OpenCV+Python识别车牌和字符分割的实现
- 2024-09-11 在Fedora中安装OpenCV-Python | 二
- 08-02C|在一个结构体嵌套一个共用体实现一体多用
- 08-02C++中,常用的强制类型转换函数
- 08-02如何使用C语言编程实现一个推箱子游戏?技术核心和算法实现
- 08-02C++20 新特性(24):模板访问权限和typename的放宽
- 08-02C++零基础到工程实践
- 08-02[深度学习] Python人脸识别库face_recognition使用教程
- 08-02AI算法之怎么利用Python实现支持向量机SVM算法
- 08-02【机器学习】SVM支持向量机
- 1521℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 623℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 526℃MySQL service启动脚本浅析(r12笔记第59天)
- 492℃启用MySQL查询缓存(mysql8.0查询缓存)
- 491℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 479℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 460℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 458℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- windowsscripthost (69)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- c语言min函数头文件 (68)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)