ubuntu22.04@laptop OpenCV安装

ubuntu22.04@laptop OpenCV安装

  • 1. 源由
  • 2. 验证环境
  • 3. OpenCV安装
    • 3.1 系统升级
    • 3.2 Python安装
    • 3.3 OpenCV C/C++环境安装
    • 3.4 OpenCV Python虚拟环境安装
    • 3.5 OpenCV检查
  • 4. 总结
  • 5. 参考资料
  • 6. 补充 - python环境

1. 源由

最近,打算在Companion Computer上一些目标识别的算法,最流行、最基础的可能就是OpenCV了。

首先,将算法在x86的laptop上跑起来,将目标识别程序运行起来,基本的功能实现。

然后,基于Linux系统移植到Companion Computer上就会简单很多。

2. 验证环境

准备以下验证环境:

  • x86-64bit laptop x 1
  • ubuntu 22.04 jammy
  • OpenCV 4.9.0 (latest release)
$ lsb_release  -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.3 LTS
Release:        22.04
Codename:       jammy$ tree -L 1
.
├── opencv
├── opencv_contrib
├── opencv-4.9.0-py3
├── opencv-4.9.0.zip
└── opencv_contrib-4.9.0.zip

3. OpenCV安装

目前,最新的OpenCV发行版本: 4.9.0

  • opencv-4.9.0
  • opencv_contrib-4.9.0
### Define OpenCV Version to install 
cvVersion="4.9.0"### Save current working directory
SNAPDRAGONFLY_CURRENT_DIR_PATH=$(pwd)SNAPDRAGONFLY_CURRENT_OPENCV=opencv
SNAPDRAGONFLY_CURRENT_OPENCV_CONTRIB=opencv_contribSNAPDRAGONFLY_CURRENT_OPENCV_ZIP=opencv-$cvVersion.zip
SNAPDRAGONFLY_CURRENT_OPENCV_CONTRIB_ZIP=opencv_contrib-$cvVersion.zip

3.1 系统升级

除了必备的组件外,更新了一些常用的工具,比如:tree, aptitude 。

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu jammy-security main" -y
sudo apt -y update
sudo apt -y upgrade### Install dependencies
sudo apt -y install unzip locate tree aptitude
sudo apt -y install build-essential checkinstall cmake pkg-config yasm
sudo apt -y install git gfortran
sudo apt -y install libjpeg8-dev libpng-dev libjpeg-dev libgtk-3-dev 
sudo apt -y install software-properties-common
sudo apt -y install libtiff-dev
sudo apt -y install libavcodec-dev libavformat-dev libswscale-dev libdc1394-dev
sudo apt -y install libxine2-dev
sudo apt -y install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
sudo apt -y install libgtk2.0-dev libtbb-dev libtbb2
sudo apt -y install openexr libopenexr-dev python3-numpy### qt5-default dependencies
sudo apt -y install libatlas-base-dev
sudo apt -y install libfaac-dev libmp3lame-dev libtheora-dev
sudo apt -y install libvorbis-dev libxvidcore-dev
sudo apt -y install libopencore-amrnb-dev libopencore-amrwb-dev libavro-dev
sudo apt -y install x264 libx264-dev v4l-utils
sudo apt -y install qtcreator qtbase5-dev qt5-qmake cmake### Optional dependencies
sudo apt -y install libprotobuf-dev protobuf-compiler
sudo apt -y install libgoogle-glog-dev libgflags-dev
sudo apt -y install libgphoto2-dev libeigen3-dev libhdf5-dev doxygen### Special dependencies
sudo apt -y install libv4l-dev
cd /usr/include/linux
sudo ln -s -f ../libv4l1-videodev.h videodev.h

注:本次系统采用的Ubuntu 22.04.3 LTS,所以使用了jammy-security源,请大家根据实际情况调整。

3.2 Python安装

使用Python虚拟环境,方便切换(笔者这里也有一些本地环境,为了避免相互干扰,虚拟Python环境会更好些)。

sudo apt -y install python3-dev python3-pip
sudo apt -y install python3-testresources
sudo apt -y install python3.10-venv### create virtual environment
python3 -m venv opencv-"$cvVersion"-py3
echo "# Virtual Environment Wrapper" >> ~/.bashrc
echo "alias workoncv-$cvVersion=\"source $SNAPDRAGONFLY_CURRENT_DIR_PATH/opencv-$cvVersion-py3/bin/activate\"" >> ~/.bashrc### enter virtual environment
source "$SNAPDRAGONFLY_CURRENT_DIR_PATH"/opencv-"$cvVersion"-py3/bin/activate### install python libraries within this virtual environment
pip install -r requirements.txt### quit virtual environment
deactivate

3.3 OpenCV C/C++环境安装

这里的命令含有部分脚本变量。如果大家copy下来,实际上是可以直接脚本运行的。

但是,国内环境复杂多变,如果顺序执行的脚本搞不定,还请一行一行手动执行。

注:后续有时间,会整理一些基本安装脚本,方便大家学习使用。

# https://github.com/opencv/opencv.git
wget https://github.com/opencv/opencv/archive/refs/tags/$cvVersion.zip
mv $cvVersion.zip $SNAPDRAGONFLY_CURRENT_OPENCV_ZIP
unzip $SNAPDRAGONFLY_CURRENT_OPENCV_ZIP
mv opencv-$cvVersion opencv# https://github.com/opencv/opencv_contrib.git
wget https://github.com/opencv/opencv_contrib/archive/refs/tags/$cvVersion.zip
mv $cvVersion.zip $SNAPDRAGONFLY_CURRENT_OPENCV_CONTRIB_ZIP
unzip $SNAPDRAGONFLY_CURRENT_OPENCV_CONTRIB_ZIP
mv opencv_contrib-$cvVersion opencv_contrib### Clean build directories
rm -rf opencv/build
rm -rf opencv_contrib/build### Build opencv
cd opencv
mkdir build
cd buildcmake -D CMAKE_BUILD_TYPE=RELEASE \-D WITH_TBB=ON \-D BUILD_TBB=OFF \-D WITH_V4L=ON \-D WITH_QT=ON \-D WITH_OPENGL=ON \-D OPENCV_GENERATE_PKGCONFIG=ON \-D INSTALL_PYTHON_EXAMPLES=ON \-D INSTALL_C_EXAMPLES=ON \-D OPENCV_PYTHON3_INSTALL_PATH=$SNAPDRAGONFLY_CURRENT_DIR_PATH/opencv-$cvVersion-py3/lib/python3.10/site-packages \-D OPENCV_ENABLE_NONFREE=ON \-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \-D PYTHON_EXECUTABLE=../../opencv-$cvVersion-py3/bin/python3 \-D BUILD_EXAMPLES=ON ..make -j$(nproc)
make install

3.4 OpenCV Python虚拟环境安装

$ cp opencv/build/lib/python3/cv2.cpython-310-x86_64-linux-gnu.so opencv-4.9.0-py3/lib/python3.10/site-packages/cv2/cv2.so

3.5 OpenCV检查

大致看到下面输出,系统里面应该基本就安装好了。

  • C/C++环境
$ pkg-config --modversion opencv4
4.9.0
  • Python虚拟环境
$ workoncv-4.9.0
(opencv-4.9.0-py3) daniel@daniel-ThinkPad-SL410:~/OpenCV$ ipython
Python 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0]
Type 'copyright', 'credits' or 'license' for more information
IPython 8.21.0 -- An enhanced Interactive Python. Type '?' for help.In [1]: import cv2In [2]: print(cv2.__version__)
4.9.0In [3]: quit
(opencv-4.9.0-py3) daniel@daniel-ThinkPad-SL410:~/OpenCV$ deactivate

4. 总结

笔者整理这份资料是搞了好几天的,遇到不少坑。

主要就是折腾在OpenCV开发环境不熟悉,网络复杂多变等问题上。希望整理出来,方便交流学习!

  • Github操作网络异常笔记
  • apt-get通过代理更新系统

补充:3.3章需要可能需要代理,具体情况请根据实际网络进行配置。

$ git config --global https.proxy http://192.168.1.13:808
$ export https_proxy=http://192.168.1.13:808

5. 参考资料

【1】ubuntu22.04@laptop 常用基础环境安装
【2】ubuntu22.04@laptop安装&配置VNC服务端
【3】ArduPilot开源代码之CompanionComputer上天计划

6. 补充 - python环境

之前发现python3环境下,cv2输出4.5.4,没有理解。后面发现该4.5.4是ubuntu deb安装包的版本。

$ python3 -c "import cv2; print(cv2.__version__)"
4.5.4

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/665924.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PyQtWebEngine模块,PyQt5用于处理网页渲染和浏览器功能

一、简介 PyQtWebEngine 是 PyQt5 框架的一个模块,用于在 PyQt5 应用程序中嵌入 Web 引擎功能。它基于 Qt WebEngine 技术,提供了与 Web 内容交互的功能,包括显示网页、执行 JavaScript、处理网络请求等。 以下是 PyQtWebEngine 的一些特点和…

MYSQL——MySQL8.3无法启动

在新电脑上装了个MySQL,但是无法使用net start mysql启动,很是纳闷,使用mysqld --console去查看报错,也是没报错的,但是奇怪的是,我输入完这个mysqld --console之后,就等于启动了mysql了&#x…

[python]基于opencv实现的车道线检测

【检测原理】 一、首先进行canny边缘检测,为获取车道线边缘做准备 二、进行ROI提取获取确切的车道线边缘(红色线内部) 三、利用概率霍夫变换获取直线,并将斜率正数和复数的线段给分割开来 四、离群值过滤,剔除斜率…

大数据平台-可视化面板介绍-Echarts

应对现在数据可视化的趋势,越来越多企业需要在很多场景(营销数据,生产数据,用户数据)下使用,可视化图表来展示体现数据,让数据更加直观,数据特点更加突出。 目录 01-使用技术 02- 案例适配方案 03-基础…

【大厂AI课学习笔记】1.4 算法的进步(4)关于李飞飞团队的ImageNet

第一个图像数据库是ImageNet,由斯坦福大学的计算机科学家李飞飞推出。ImageNet是一个大型的可视化数据库,旨在推动计算机视觉领域的研究。这个数据库包含了数以百万计的手工标记的图像,涵盖了数千个不同的类别。 基于ImageNet数据库&#xf…

编译Faiss-gpu【InterMKL】C++ 按步骤操作 基本不会有问题的 python原理相同。

编译Faiss-gpu C++ 基本介绍 使用Faiss版本【1.7.4】 该项目依赖于BLAS 组件 OpenBLAS 和 IntelMKL BLAS 【官方支持】 IntelMKL 会比 OpenBLAS 快的多。 【来自官方结论】 本机环境 Cuda :11.1 Cuda-Driver: 515 InterMKL: 2021.2.0 Faiss :1.7.4 注意:faiss仅…

podman详解

Podman 是一个开源项目,用于开发、管理和运行容器和容器镜像。它与 Docker 非常相似,但有一些关键的不同之处。 Podman 的主要特点包括: 无守护进程:不同于 Docker,Podman 不需要运行一个永久的守护进程。这使得 Podm…

Android之命令行烧写OTA镜像(一百八十五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

【Leetcode】1690. 石子游戏 VII

文章目录 题目思路代码结果 题目 题目链接 石子游戏中,爱丽丝和鲍勃轮流进行自己的回合,爱丽丝先开始 。 有 n 块石子排成一排。每个玩家的回合中,可以从行中 移除 最左边的石头或最右边的石头,并获得与该行中剩余石头值之 和 相…

Spark context stopped while waiting for backend

目录 报错信息 解决办法 解释 报错信息 Spark context stopped while waiting for backend 翻译过来就是 :Spark上下文在等待后端时停止 解决办法 通过在yarn-site.xml中添加如下配置项,并重启yarn,程序在 “–driver-memory 600m --e…

Vue基础知识七

一 路由 1.1 生活里的路由与路由器 是为了实现多台设备上网 1.2 程序里的路由与路由器 是为了实现导航区与展示区来回切换; SPA单页面应用:就像前几章节里的项目,整个项目只有一个html文件; 案例 注意,最开始的时候…

嵌入式学习 Day18

Linux软件编程: 1.Linux: 操作系统的内核 1.管理CPU 2.管理内存 3.管理硬件设备 4.管理文件系统 5.任务调度 2.Shell: 1.保护Linux内核(用户和Linux内核不直接操作,通过操作Shell,Shell和内核交互) 2.命令解释器 3…

STM32--SPI通信协议(2)W25Q64简介

一、W25Q64简介 1、W25Qxx中的xx是不同的数字,表示了这个芯片不同的存储容量; 2、存储器分为易失性与非易失性,主要区别是存储的数据是否是掉电不丢失: 易失性存储器:SRAM、DRAM; 非易失性存储器&#xff…

用linux文件系统的链接功能实现文件缓存LRU

概述: 目前,随着家庭宽带网络、无线宽带技术,以及终端设备性能的不断发展,基于多媒体的应用越来越广泛,特别是互联网视频的应用更是成为推动这些技术发展的源动力。作为互联网视频VOD的应用,提高视频播放的流畅度是一个非常重要的指标之一。除了编解码技术,视频C…

编程笔记 html5cssjs 077 Javascript 关键字

编程笔记 html5&css&js 077 Javascript 关键字 一、关键字二、Javascript关键字注意 在计算机编程语言中,关键字(Keyword)是指那些被编程语言赋予特殊含义、具有预定义用途的保留字。这些词汇不能用作变量名、函数名或其他标识符&…

红队渗透靶机:LORD OF THE ROOT: 1.0.1

目录 信息收集 1、arp 2、nmap 3、knock 4、nikto 目录探测 1、gobuster 2、dirsearch WEB sqlmap 爆库 爆表 爆列 爆字段 hydra爆破 ssh登录 提权 信息收集 内核提权 信息收集 1、arp ┌──(root㉿ru)-[~/kali] └─# arp-scan -l Interface: eth0, ty…

参考数据集INRIA Holidays dataset

Download datasets 很贴心,MATLAB访问代码: % This function reads a siftgeo binary file % % Usage: [v, meta] = siftgeo_read (filename, maxdes) % filename the input filename % maxdes maximum number of descriptors to be loaded % (default=unlimit…

【微服务】Spring Boot集成ELK实用案例

推荐一款我一直在用国内很火的AI网站,包含GPT3.5/4.0、文心一言、通义千问、智谱AI等多个AI模型,支持PC、APP、VScode插件同步使用,点击链接跳转->ChatGPT4.0中文版 一、前言 在现代软件开发中,微服务架构已成为一种流行趋势。…

1 月 30 日算法练习-数论

唯一分解定理 唯一分解定理指的是:对于任意一个>1的正整数,都可以以唯一的一种方式分解为若干质因数的乘积。 x p 1 k 1 ⋅ p 2 k 2 ⋅ … ⋅ p m k m x p_1^{k_1} \cdot p_2^{k_2} \cdot \ldots \cdot p_m^{k_m} xp1k1​​⋅p2k2​​⋅…⋅pmkm​…

数据分析之数据预处理、分析建模、可视化

数据分析的过程通常包括数据预处理、分析建模和可视化三个主要阶段。以下是每个阶段的简要说明: 数据预处理: 数据预处理是数据分析过程中的一个重要步骤,它涉及到对原始数据进行清洗、整理、转化等操作,以便更好地进行后续的分析…