百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

编译安装OpenCV全攻略,附本地源码包

itomcoil 2025-01-29 16:12 98 浏览

本文以Ubuntu(适用于18,20,22版本,其他的未进行测试)为例,介绍了编译安装OpenCV的最佳实践。其他平台比如windows,只需要参考本文的思路做稍微调整即可。

一、为什么需要编译安装OpenCV

如果没有特别的要求,采用命令行方式,就可以快速的进行OpenCV的安装。

sudo apt-get install libopencv-dev
sudo apt-get install python3-opencv 
sudo apt-get install libopencv-contrib-dev

采用pip方式安装脚本如下

pip install opencv-python opencv-contrib-python -i https://pypi.tuna.tsinghua.edu.cn/simple

这样安装的OpenCV基本可以满足一般的开发需求,但是也存在以下的不足:

(1)安装的OpenCV不是最新的版本,尤其是contrib版本变化很快,部分最新的功能(有些新的背景提取,跟踪算法)会有所缺失。

(2)没有CUDA加速支持。

(3)如果apt不支持特定的CPU(比如arm)或者操作系统,就只能编译安装了。

如果我们的开发正好需要以上能力,建议通过源码编译方式安装。

二、OpenCV+CUDA有什么用处

OpenCV支持通过GPU实现CUDA加速执行,实现对OpenCV图像处理程序的加速运行,当前支持加速的模块包括如下:

  • 图像背景分割
  • 视频编解码
  • 特征2D
  • 卷积滤波
  • 图像处理
  • 对象检测
  • 光流
  • 双目视觉
  • ...

在程序中调用CUDA也比较简单,这里先看看示例代码,基本上和在CPU上的图形操作函数类似,只是使用了CUDA模块内的函数。关于OpenCV+CUDA以后会专门展开进行说明

Size mosaicSize(100, 100);                     // 调整后的大小
cv::cuda::resize(GpuFrame, GpuFrame, mosaicSize, 1, 0, 0); // 使用CUDA缩放图片

如果代码中没有cuda支持的需要,就没必要安装cuda模块了。

三、踩坑点

(1)不要在conda环境下编译安装

由于conda环境修改了部分环境变量,编译安装OpenCV过程中,经常发生冲突,我踩了不少坑,才发现这个问题。切记切记,不要在conda环境下编译安装如果已经安装了conda,建议将 ~/.bashrc文件中以下内容注释。

gedit ~/.bashrc

注释以下内容

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/home/chen/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/home/chen/anaconda3/etc/profile.d/conda.sh" ]; then
        . "/home/chen/anaconda3/etc/profile.d/conda.sh"
    else
        export PATH="/home/chen/anaconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda initialize <<<

(2)需要从git上下载部分文件和模型

使用源码编译过程中,有些模块需要从git下载部分模型和一系列文件,由于网络的原因,这些下载基本都会超时,导致编译失败。

我在这里提供一个已经打包好的OpenCV4.8包,包括了源码和下载文件。直接按照后面的安装脚本步骤一步一步执行就可以了。无需联网下载文件。

共享链接:
https://pan.baidu.com/s/12qlrU8znVqQWm4_Mv69HHA

提取码: kugj



本共享长期有效。如果失效,烦请留言或者私信,重新发送地址。

四、保姆级编译安装步骤

(1)创建OpenCV4.8目录(可以是别的名字,不要包括中文),在该目录中,将百度网盘下载的OpenCV源码(包括opencv.zip和opencv_contrib.zip)分别解压到各自目录中。cmake.txt是cmake的命令行,可以下载后作为参考。

(2)在OpenCV4.8目录中创建一个build目录。创建后的目录结构如下。以后的所有操作都在build目录中进行!!!

(3)安装依赖文件

我是都安装了。假如自己了解各个模块的作用,可以进行取舍。根据自己的情况少装,或者不装部分包。

sudo apt install make gcc cmake build-essential 
sudo apt install libgtk2.0-dev libgtk-3-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
sudo apt install ffmpeg

(4)cmake预编译

-D WITH_CUDA=1表示带CUDA的编译。其他的编译选项如果不是很了解,可以不用动。

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules -D WITH_CUDA=1 -D ENABLE_FAST_MATH=1 -D CUDA_FAST_MATH=1 -D WITH_CUBLAS=1 -D OPENCV_GENERATE_PKGCONFIG=1 ../opencv

(5)make编译

-j8表示用8个线程编译,可以根据CPU能力改为-j4,-j16等等。根据机器情况不同,编译大约需要1-2个小时

编译过程如果有需要,可以随时用ctrl+C中断,然后重新执行make命令,编译工作从中断的地方继续,不会有任何影响。

make -j8

(6)安装编译文件

将编译后的文件安装在 CMAKE_INSTALL_PREFIX 指定的目录中

sudo make install

(7)大功告成。

相关推荐

Python Qt GUI设计:将UI文件转换Python文件三种妙招(基础篇—2)

在开始本文之前提醒各位朋友,Python记得安装PyQt5库文件,Python语言功能很强,但是Python自带的GUI开发库Tkinter功能很弱,难以开发出专业的GUI。好在Python语言的开放...

Connect 2.0来了,还有Nuke和Maya新集成

ftrackConnect2.0现在可以下载了--重新设计的桌面应用程序,使用户能够将ftrackStudio与创意应用程序集成,发布资产等。这个新版本的发布中还有两个Nuke和Maya新集成,...

Magicgui:不会GUI编程也能轻松构建Python GUI应用

什么是MagicguiMagicgui是一个Python库,它允许开发者仅凭简单的类型注解就能快速构建图形用户界面(GUI)应用程序。这个库基于Napari项目,利用了Python的强大类型系统,使得...

Python入坑系列:桌面GUI开发之Pyside6

阅读本章之后,你可以掌握这些内容:Pyside6的SignalsandSlots、Envents的作用,如何使用?PySide6的Window、DialogsandAlerts、Widgets...

Python入坑系列-一起认识Pyside6 designer可拖拽桌面GUI

通过本文章,你可以了解一下内容:如何安装和使用Pyside6designerdesigner有哪些的特性通过designer如何转成python代码以前以为Pyside6designer需要在下载...

pyside2的基础界面(pyside2显示图片)

今天我们来学习pyside2的基础界面没有安装过pyside2的小伙伴可以看主页代码效果...

Python GUI开发:打包PySide2应用(python 打包pyc)

之前的文章我们介绍了怎么使用PySide2来开发一个简单PythonGUI应用。这次我们来将上次完成的代码打包。我们使用pyinstaller。注意,pyinstaller默认会将所有安装的pack...

使用PySide2做窗体,到底是怎么个事?看这个能不能搞懂

PySide2是Qt框架的Python绑定,允许你使用Python创建功能强大的跨平台GUI应用程序。PySide2的基本使用方法:安装PySide2pipinstallPy...

pycharm中conda解释器无法配置(pycharm安装的解释器不能用)

之前用的好好的pycharm正常配置解释器突然不能用了?可以显示有这个环境然后确认后可以conda正在配置解释器,但是进度条结束后还是不成功!!试过了pycharm重启,pycharm重装,anaco...

Conda使用指南:从基础操作到Llama-Factory大模型微调环境搭建

Conda虚拟环境在Linux下的全面使用指南:从基础操作到Llama-Factory大模型微调环境搭建在当今的AI开发与数据分析领域,conda虚拟环境已成为Linux系统下管理项目依赖的标配工具。...

Python操作系统资源管理与监控(python调用资源管理器)

在现代计算环境中,对操作系统资源的有效管理和监控是确保应用程序性能和系统稳定性的关键。Python凭借其丰富的标准库和第三方扩展,提供了强大的工具来实现这一目标。本文将探讨Python在操作系统资源管...

本地部署开源版Manus+DeepSeek创建自己的AI智能体

1、下载安装Anaconda,设置conda环境变量,并使用conda创建python3.12虚拟环境。2、从OpenManus仓库下载代码,并安装需要的依赖。3、使用Ollama加载本地DeepSe...

一文教会你,搭建AI模型训练与微调环境,包学会的!

一、硬件要求显卡配置:需要Nvidia显卡,至少配备8G显存,且专用显存与共享显存之和需大于20G。二、环境搭建步骤1.设置文件存储路径非系统盘存储:建议将非安装版的环境文件均存放在非系统盘(如E盘...

使用scikit-learn为PyTorch 模型进行超参数网格搜索

scikit-learn是Python中最好的机器学习库,而PyTorch又为我们构建模型提供了方便的操作,能否将它们的优点整合起来呢?在本文中,我们将介绍如何使用scikit-learn中的网格搜...

如何Keras自动编码器给极端罕见事件分类

全文共7940字,预计学习时长30分钟或更长本文将以一家造纸厂的生产为例,介绍如何使用自动编码器构建罕见事件分类器。现实生活中罕见事件的数据集:背景1.什么是极端罕见事件?在罕见事件问题中,数据集是...