我和jetson-Nano的故事(10)——安装OpenCV3.2.0

1. 仓库地址

  • opencv
    https://opencv.org/releases/page/6/
  • opencv_contrib
    https://github.com/opencv/opencv_contrib/tree/3.2.0

2. cmake-gui安装

安装指令

sudo apt-get install cmake-qt-gui

如果安装过程中入到下面的问题
在这里插入图片描述
可以按照以下方法解决

sudo apt --fix-broken install
sudo apt clean  
sudo apt update

一旦你解决了依赖关系问题,就可以尝试重新安装 cmake-qt-gui

sudo apt-get install cmake-qt-gui

3.编译安装

将压缩包解压并进入文件夹,把opencv_contrib-3.2.0放到opencv-3.2.0文件夹中,创建build文件夹

cd opencv-3.2.0
mkdir build

卸载opencv4.1.1

sudo apt-get remove libopencv*

3.1 编译报错

3.1.1 替换下载地址

由于网络环境原因,cmake过程中部分文件会因无法链接到下载地址导致cmake失败。

我们先行替换部分文件下载地址。

3.1.1.1 <boostdesc_bgm.i> 相关文件下载失败

打开终端,输入以下内容打开对应cmake文件:

sudo gedit ~/OpenCV/opencv_contrib-3.2.0/modules/xfeatures2d/cmake/download_boostdesc.cmake

将其中的raw.githubusercontent.com修改为raw.staticdn.net,保存并关闭gedit编辑器。

3.1.1.2 <vgg_generated_xxx.i> 相关文件下载失败

打开终端,输入以下内容,打开对应cmake文件:

sudo vim ~/OpenCV/opencv_contrib-3.2.0/modules/xfeatures2d/cmake/download_vgg.cmake

将其中的raw.githubusercontent.com修改为raw.staticdn.net,保存并关闭gedit编辑器。

3.1.2 OpenCV编译出现 CMake Error: CUDA_nppi_LIBRARY (ADVANCED)

在这里插入图片描述
原因解析:

cuda10不再支持2.0架构

解决方法:

第一步:在 opencv-3.2.0/cmake 文件夹下找到 FindCUDA.cmake 文件,对其进行修改

cd /home/zqzy/software/opencv-3.2.0/cmake
sudo vim FindCUDA.cmake

1)找到行

find_cuda_helper_libs(nppi)

改为

  find_cuda_helper_libs(nppial)find_cuda_helper_libs(nppicc)find_cuda_helper_libs(nppicom)find_cuda_helper_libs(nppidei)find_cuda_helper_libs(nppif)find_cuda_helper_libs(nppig)find_cuda_helper_libs(nppim)find_cuda_helper_libs(nppist)find_cuda_helper_libs(nppisu)find_cuda_helper_libs(nppitc)

2)找到行

set(CUDA_npp_LIBRARY "${CUDA_nppc_LIBRARY};${CUDA_nppi_LIBRARY};${CUDA_npps_LIBRARY}")

改为

set(CUDA_npp_LIBRARY "${CUDA_nppc_LIBRARY};${CUDA_nppial_LIBRARY};${CUDA_nppicc_LIBRARY};${CUDA_nppicom_LIBRARY};${CUDA_nppidei_LIBRARY};${CUDA_nppif_LIBRARY};${CUDA_nppig_LIBRARY};${CUDA_nppim_LIBRARY};${CUDA_nppist_LIBRARY};${CUDA_nppisu_LIBRARY};${CUDA_nppitc_LIBRARY};${CUDA_npps_LIBRARY}")

3)找到行

unset(CUDA_nppi_LIBRARY CACHE)

改为

unset(CUDA_nppial_LIBRARY CACHE)
unset(CUDA_nppicc_LIBRARY CACHE)
unset(CUDA_nppicom_LIBRARY CACHE)
unset(CUDA_nppidei_LIBRARY CACHE)
unset(CUDA_nppif_LIBRARY CACHE)
unset(CUDA_nppig_LIBRARY CACHE)
unset(CUDA_nppim_LIBRARY CACHE)
unset(CUDA_nppist_LIBRARY CACHE)
unset(CUDA_nppisu_LIBRARY CACHE)
unset(CUDA_nppitc_LIBRARY CACHE)

第二步: 在 opencv-3.2.0/cmake 文件夹下找到文件 OpenCVDetectCUDA.cmake,对其进行修改

cd /home/agilex/opencv3/opencv-3.2.0/cmakesudo gedit OpenCVDetectCUDA.cmake

修改以下几行

 ...set(__cuda_arch_ptx "")if(CUDA_GENERATION STREQUAL "Fermi")set(__cuda_arch_bin "2.0")elseif(CUDA_GENERATION STREQUAL "Kepler")set(__cuda_arch_bin "3.0 3.5 3.7")...

改为

  ...set(__cuda_arch_ptx "")if(CUDA_GENERATION STREQUAL "Kepler")set(__cuda_arch_bin "3.0 3.5 3.7")elseif(CUDA_GENERATION STREQUAL "Maxwell")set(__cuda_arch_bin "5.0 5.2")...

第三步: Cuda9或者Cuda10及以后的版本 中有一个单独的halffloat(cuda_fp16.h)头文件,也应该被包括在opencv的目录里

将头文件cuda_fp16.h添加至 opencv/modules/cudev/include/opencv2/cudev/common.hpp

cd /home/agilex/opencv3/opencv-3.2.0/modules/cudev/include/opencv2/cudevsudo gedit common.hpp

即在common.hpp中添加

#include <cuda_fp16.h>

重新生成即可

3.1.3 查看 CUDA 版本:nvcc -V 报错:bash: nvcc: 未找到命令

正常情况下,在安装完jetpack 系统之后,jetson nano会自动安装好cuda,
但是却提示报错
原因就是没有配置环境变量

解决办法
此时切换到 ~ 目录下: cd ~ ;

然后打开 .bashrc 文件:

cd ~ 
sudo  vim .bashrc 

接着按 i 键,进入编辑状态;

再接着在文件的末尾添加下面三行代码:

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export CUDA_ROOT=/usr/local/cuda

紧接着,按 Esc 键,然后输入冒号 ,再按下 wq! (表示强制写入并退出)!

最后一步,也是容易忘记的一步,一定要 source 一下这个文件:

source .bashrc

3.2 配置OpenCV

打开终端,输入:

#来到build文件夹
cd ~/opencv3/opencv-3.2.0/build
#执行cmake
cmake -D WITH_CUDA=ON -D CUDA_ARCH_BIN="7.2" -D ENABLE_PRECOMPILED_HEADERS=OFF  -D CUDA_ARCH_PTX="" -D WITH_GSTREAMER=ON -D WITH_LIBV4L=ON -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_EXAMPLES=OFF -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=~/opencv3/opencv_contrib-3.2.0/modules ..

不报错的话会输出以下信息
在这里插入图片描述
编译安装OpenCV

#来到build文件夹
sudo make -j4
sudo make install

4.OpenCV环境配置

创建opencv.conf文件,打开终端,输入:

sudo gedit /etc/ld.so.conf.d/opencv.conf

在文件中添加以下内容后保存并关闭gedit编辑器:

/usr/local/lib

使opencv配置文件生效

打开终端,输入:

sudo ldconfig

配置bash环境变量
打开.bashrc文件,在终端输入:

sudo gedit ~/.bashrc

在文件的最末尾加入:

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

保存并关闭gedit编辑器。

在终端输入:

source ~/.bashrc

验证opencv是否安装成功:
打开终端,输入:

pkg-config --modversion opencv

若安装成功,终端应输出:

3.2.0

在这里插入图片描述

5.参考资料

  1. Jetson Nano 安装 OpenCV 3.2.0 详细步骤
  2. OpenCV编译出现 CMake Error: CUDA_nppi_LIBRARY (ADVANCED)

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

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

相关文章

BakedSDF: Meshing Neural SDFs for Real-Time View Synthesis 论文阅读

&#xff08;水一篇博客&#xff09; 项目主页 BakedSDF: Meshing Neural SDFs for Real-Time View Synthesis 作者介绍 是 Mildenhall 和 Barron 参与的工作&#xff08;都是谷歌的&#xff09;&#xff0c;同时一作是 Lipman 的学生&#xff0c;VolSDF 的一作。本文引用…

旧手机-基于Termux配置服务器(不用拿去换钢盆了)

Hi&#xff0c;大家好&#xff0c;我是抢老婆酸奶的小肥仔。 大家用手机这么多年了&#xff0c;手上或多或少都有一两个被替换下来的旧手机&#xff0c;也不用拿去换啥钢盆了&#xff0c;使用Termux可以将旧手机改造成一个服务器。 不多说&#xff0c;直接开干。 1、安装app…

基于springboot+vue+Mysql的在线答疑系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

经纬恒润助力AR-HUD市场发展,国产供应商共筑行业新篇章

根据盖世汽车研究院数据显示&#xff0c;1-2月经纬恒润AR-HUD出货量已达到国产供应商前五。未来&#xff0c;经纬恒润将持续努力&#xff0c;推动AR-HUD发展&#xff0c;共筑行业新篇章&#xff01; 了解更多&#xff1a; 请致电 010-64840808转6115或发送邮件至market_depthi…

MySQL创建索引报错 Specified key was too long;max key length is 1000 bytes.

MySQL对创建索引的大小有限制&#xff0c;一般索引键最大长度总和不能超过1000个字节。 问题描述 MySQL创建索引时报错 Specified key was too long;max key length is 1000 bytes. 解决办法 (1) 修改存储引擎 InnoDB的索引字段长度限制大于MyISAM&#xff0c;可以尝试改成…

【面试必看】MySQL部分

MySQL 1. 基础 1. 什么是关系型数据库&#xff1f; 一种建立在关系模型的基础上的数据库。关系模型表明了数据库中所存储的数据之间的联系&#xff08;一对一、一对多、多对多&#xff09;。各种表中&#xff08;比如用户表&#xff09;&#xff0c;表中的每一行就存放着一条…

CAPL入门之使用CAPL记录测试Logging

0 前言 以往测试的log都是直接从trace导出&#xff0c;但是最近发现trace中能导出的数据是有限的&#xff0c;如果测试的时间过长&#xff0c;新的数据就会把之前的数据全部覆盖&#xff0c;并且对于长时间的测试&#xff0c;直接导出trace的内容也会造成查找效率低下的问题。因…

【计算机网络】HTTP协议详解实战抓包分析教程

文章目录 1.HTTP简介2.HTTP报文的结构3.HTTP协议中空行的作用4.uri和url的区别5.HTTP请求5.1 HTTP请求方法5.2 HTTP请求报头 6.HTTP响应6.1 状态码 7.HTTP位于应用层(基于TCP)8.非持久和持久连接8.1 非持久连接8.2 持久连接 1.HTTP简介 HTTP&#xff08;Hypertext Transfer Pr…

Springboot+mybatis-plus+dynamic-datasource+继承DynamicRoutingDataSource切换数据源

Springbootmybatis-plusdynamic-datasource继承DynamicRoutingDataSource切换数据源 背景 最近公司要求支持saas&#xff0c;实现动态切换库的操作&#xff0c;默认会加载主租户的数据源&#xff0c;其他租户数据源在使用过程中自动创建加入。 解决问题 1.通过请求中设置租…

用户页面触发点击事件和 js 执行点击事件的区别

文章目录 情景展示情况一&#xff1a;用户点击页面触发情况二&#xff1a;通过 js 触发点击 结果分析情况一情况二 其实这个谜底揭开之后&#xff0c;第一反应都是&#xff0c;哦~&#xff0c;非常简单&#xff0c;但是细节决定成败&#xff0c;我被这个细节毁掉了&#xff0c;…

【十大排序算法】----选择排序(详细图解分析+实现,小白一看就会)

目录 一&#xff1a;选择排序——原理 二&#xff1a;选择排序——分析 三&#xff1a;选择排序——实现 四&#xff1a;选择排序——优化 五&#xff1a;选择排序——效率 一&#xff1a;选择排序——原理 选择排序的原理&#xff1a;通过遍历数组&#xff0c;选出该数组…

精酿啤酒:精酿文化的传承者与创新者

在啤酒的世界中&#xff0c;精酿啤酒是一种与众不同的文化现象。这种文化源于对啤酒品质的追求和对传统工艺的尊重&#xff0c;但在不断发展中也不断涌现出创新。作为精酿啤酒的品牌&#xff0c;Fendi club啤酒不仅是这种文化的传承者&#xff0c;更是创新者。 Fendi club啤酒始…

香港电讯高效网络,助力新消费品牌抓住拓展香港市场新风口

自今年初香港与内地全面恢复通关&#xff0c;两地同胞跨境消费热潮持续升温。港人“北上”消费掀起风潮的同时&#xff0c;香港市场也成为内地新消费品牌拓展的热门目标。从糕点、茶饮、连锁餐饮到服饰&#xff0c;越来越多内地品牌进驻香港。新消费品牌要想在香港开设门店&…

QT部分学习笔记

文章目录 1.前言注意问题2.学习历程2.0 创建项目 快捷键&#xff1a;2.1 创建按钮2.2 对象树2.3 调试输出2.4 QT坐标系2.5 信号和槽 3.Qmainwindow3.1 窗口菜单栏创建3.2 工具栏3.3 状态栏3.4 铆接部件3.5 对话框 4. 1.前言 版本&#xff1a; 5.9.9 注意问题 Qstring类型通多…

算法课程笔记——蓝桥云课第11次直播

算法课程笔记——蓝桥云课第11次直播

ORA-28575: unable to open RPC connection to external procedure agent

环境&#xff1a; Oracle 11.2.0.4x64 RAC AIX6.1版本SDE for aix oracle11g版本10.0 x64 sde配置情况如下&#xff1a; 检查oracle和grid用户下的$ORACLE_HOME/hs/admin/extproc.ora文件均包含有如下&#xff1a; SET EXTPROC_DLLSANY 两个节点sde下的user_libraries都正常…

leetcode.环形链表问题

目录 题目1 示例 解题思路 代码实现 补充 题目2 示例 解题思路 代码实现 题目1 该题链接&#xff1a;https://leetcode.cn/problems/linked-list-cycle/description/ 示例 解题思路 要创建两个指针一个是快指针(fast)&#xff0c;另一个慢指针(slow)。快指针走两步慢指…

【Android】Apk图标的提取、相同目录下相同包名提取的不同图标apk但是提取结果相同的bug解决

一般安卓提取apk图标我们有两种常用方法&#xff1a; 1、如果已经获取到 ApplicationInfo 对象&#xff08;假设名为 appInfo&#xff09;&#xff0c;那么我们获取方法为&#xff1a; appInfo.loadIcon(packageManager)// 返回一个 Drawable 对象2、 如果还没获取到 Applica…

必背!!2024年软考中级——网络工程师考前冲刺几页纸

距离软考考试的时间越来越近了&#xff0c;趁着这两周赶紧准备起来 今天给大家整理了——软考网络工程师考前冲刺几页纸&#xff0c;都是核心重点&#xff0c;有PDF版&#xff0c;可打印下来&#xff0c;每天背一点。 计算机总线分类 ①总线的分类&#xff1a;数据总线、地址总…

内网渗透瑞士军刀-impacket工具解析(二)

impacket工具解析之Kerberos认证协议 上一期我们介绍了impacket中ntlm协议的实现&#xff0c;在Windows认证中除了使用ntlm认证&#xff0c;还支持Kerberos认证协议&#xff0c;Kerberos认证也是Windows 活动目录中占比最高的认证方式。 什么是Kerberos协议&#xff1f; Kerb…