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

交叉编译OpenCV和依赖库 opencv交叉编译arm

chenpack 2025-06-26 16:00 21 浏览 0 评论

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

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

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

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

交叉编译OpenCV和依赖库 opencv交叉编译arm

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, );                     // 调整后的大小
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等等。根据机器情况不同,编译大约需要个小时

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

make -j8

(6)安装编译文件

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

sudo make install

(7)大功告成。

相关推荐

RouterOS 端口映射 (远程桌面)

一款功能强大的路由器系统-软路由-RouterOS推荐一款路由器系统,头条有很多喜欢使用软路由伙伴可能有很多都不知道RouterOS这个路由系统是,RouterOS是由拉脱维亚MikroTik...

神经网络中的编码器 神经网络视频编码

神经网络算法-一文搞懂Transformer(总体架构&三种注意力层)本文将从Transformer的本质、Transformer的原理、Transformer的应用三个方面,带您一...

必备资料103个WindowsXP运行命令

Windows中CMD最全命令行CMD命令:开始->运行(或者Windows+R)->键入cmd或command(在命令行里可以看到系统版本、文件系统版本)CMD命令锦集1.gpedit...

固态硬盘无法格式化怎么办

Windows中固态硬盘无法格式化怎么办?固态硬盘(简称SSD)是一种数据存储设备,与传统机械硬盘相比,它在许多方面表现得更好。因此,越来越多的用户希望使用固态硬盘,但是当人们购买固态硬盘后准备将其格...

手机信令数据分析_手机信令数据分析过程代码

清华大学公共管理学院刘志林教授:探索手机信令数据在城市治理中的应用中国发展网讯日前,由中国人民大学首都发展与战略研究院(以下简称“首发院”)主办的首都大讲堂(第7期)暨地方治理工作坊第二期在京举办。...

python开发ping工具 ipad python开发工具

python之ping主机#coding=utf-8frompythonpingimportpingforiinrange,):ip=&#;.&#;+str(i)...

云容灾关键技术点简介_云容器技术

阿里云发布企业级云灾备解决方案:一键容灾、成本节省%5月日,阿里云对外发布了企业级云灾备解决方案。据介绍,此次发布的灾备解决方案来自阿里巴巴IT基础设施云化的灾备经验,完全省去灾备机房的建设规划,可大...

域名泛解析设置_域名解析包括泛域名解析

如何降低域名被恶意泛解析的风险买车用车不想被忽悠,就请关注缸微信号:kf12gang←长按可复制。我们每天将免费为您解答选车用车的相关问题。作者:QQ126058域名被恶意泛解析是域名安全最常见的问...

人人通云平台怎么注册 人人通云教学登录账号

世界那么大,她看到了:一个心理咨询师的十年心灵之旅来源:环球网“世界那么大,我想去看看。”十年前的那个春天,十个字的辞职信,戳中了无数国人的心,激起了无数个“诗和远方”的小梦想,被称为“史上最具情怀...

民用远程监控手机软件_民用远程监控手机软件下载

屏幕监控软件有哪些?3款好用的监控软件分享!管控摸鱼小case!作为企业管理者,我深知员工工作效率和信息安全的重要性。在日常管理中,我时常会遇到这样的难题:员工是否在认真工作?有没有利用公司资源做与工...

重量级!Maven史上最全教程,看了必懂

对8个MCP服务器框架的比较作者:FrankGoortani编译:小兰引言模型上下文协议(MCP)是一种新标准,用于以统一方式将AI助手(如LLM)与外部数据源和工具连接起来。自推出以来,各种框架已...

面试字节跳动,收到offer后我却拒绝了 ,给面试人的一些忠告!

面试字节跳动,我被面试官狂怼全过程!来源:https://www.zhihu.com/question//answer/人们都说,这个世界上有两种人注定单身,一种是太优秀的,另一种是太平凡的。我一听呀...

ps1手柄 python Ps1手柄真假

别再花冤枉钱!教你一分钟辨别“真假”超皮秒▌什么是超皮秒?皮秒激光,就是每个激光发射的脉冲持续时间(脉宽)达到皮秒级别的激光;1ps等于的负次方秒,超皮秒其实是一种商业名称,本质上也是皮秒激光设备,我...

路由器接交换机UPLINK还是

最全攻略!网络小白也能看懂的交换机连接方法号主:老杨丨年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部中午好,我的网工朋友。在网络设备的世界里,交换机是不可或缺的存在。不同的连接方法...

tempdb 清理 tempdb可以删除吗

无需改代码,提高SQLSERVER数据库性能的个最简单方法众所周知SQLSERVER是微软的数据库拳头产品,有着图形化友好界面、操作门槛低、部署难度小,一键式安装的特点,受到全球开发者及企业的青睐...

取消回复欢迎 发表评论: