网站首页 > 技术文章 正文
引子
本来以为在 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 | 二
- 02-21走进git时代, 你该怎么玩?_gits
- 02-21GitHub是什么?它可不仅仅是云中的Git版本控制器
- 02-21Git常用操作总结_git基本用法
- 02-21为什么互联网巨头使用Git而放弃SVN?(含核心命令与原理)
- 02-21Git 高级用法,喜欢就拿去用_git基本用法
- 02-21Git常用命令和Git团队使用规范指南
- 02-21总结几个常用的Git命令的使用方法
- 02-21Git工作原理和常用指令_git原理详解
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)