Ubuntu20.04安装opencv3.1.0(包含详细解决报错方法)

news2024/10/24 13:45:07

我的环境是cuda10.1

cmake是3.16.5

第一步骤:下载安装包

第二步骤:编译环境安装

第三步骤:解压opencv安装包,并且在opencv文件夹内新建build文件夹

第四步骤:打开cmake-gui,

第五步骤:进行编译

总结:

报错解决方法汇总:

ICV: Failed to download ICV package:ippicv_linux_20151201.tgz

 /usr/include/c++/7/cstdlib:75:15: fatal error: stdlib.h: No such file or directory

 error: ‘NppiGraphcutState’ has not been declared typedef NppStatus (sudo make compile )

Note: Class l has more than 1 base class (not supported by Python C extensions)Bases: cv::a, cv:😒, cv:😒, cv::A, cv::l, cv::g, cv:😮, cv::r, cv::i, cv::t, cv::h, cv::mOnly the first base class will be usedGenerator error: constant l_MAGIC_VAL (cname=cv::l::MAGIC_VAL) already exists

#error -- unsupported GNU version! gcc versions later than 8 are not supported!

CMake Error: The following variables are used in this project, but they are set to NOTFOUND.Please set them or make sure they are set and tested correctly in the CMake files:CUDA_nppi_LIBRARY (ADVANCED)

linked by target “opencv_cudev“ in directory /home/davidhopper/opencv/opencv-3.1.0/

nvcc fatal   : Unsupported gpu architecture 'compute_20'CMake Error at cuda_compile_generated_gpu_mat.cu.o.cmake:206 (message):  Error generating  /home/danalelixin/Desktop/opencv-3.2.0/build/modules/core/CMakeFiles/cuda_compile.dir/src/cuda/./cuda_compile_generated_gpu_mat.cu.o

opencv-3.1.0/modules/videoio/src/cap_ffmpeg_impl.hpp:1313:21: error: ‘CODEC_FLAG_GLOBAL_HEADER’ was not declared in this scope         c->flags |= CODEC_FLAG_GLOBAL_HEADER;

opencv-3.1.0/modules/videoio/src/cap_ffmpeg_impl.hpp:1525:35: error: ‘AVFMT_RAWPICTURE’ was not declared in this scope


第一步骤:下载安装包

安装包名字为opencv-3.1.0.zip

opencv的安装链接看这个(内有cmake下载地址)https://blog.csdn.net/m0_69253695/article/details/136314667?spm=1001.2014.3001.5502

第二步骤:编译环境安装

sudo apt-get install build-essential

sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev

第三步骤:解压opencv安装包,并且在opencv文件夹内新建build文件夹

第四步骤:打开cmake-gui,

点configure,当没有出现红色报错后,即可点击generate

在build文件夹下点击鼠标右键,在终端中输入下面的命令也可以(但不建议这样,因为cmake的时候会有报错,需要在可视化界面内进行修改,比较方便,要不然还要修改命令就很麻烦)

sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

第五步骤:进行编译

然后在build文件夹下右键,选择终端,然后输入下面这个命令

sudo make -j8

等到100%之后再输入下面这个命令,就完成安装了

sudo make install

总结:

安装opencv3.1.0这种老版本的opencv与新版本的opencv步骤是一样的,安装步骤不是重点,重点是安装过程中遇到的报错该怎么解决,会遇到很多不兼容的报错。详细的安装步骤可以看下面的连接https://blog.csdn.net/public669/article/details/99044895

报错解决方法汇总:

ICV: Failed to download ICV package:ippicv_linux_20151201.tgz

解决办法是下载ippicv_linux_20151201.tgz包,并将包拷贝到下面这个文件夹内
opencv-3.1.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e

下面是下载的链接,下图中第一个包

https://codeload.github.com/opencv/opencv_3rdparty/zip/refs/heads/ippicv/master_20151201 

 /usr/include/c++/7/cstdlib:75:15: fatal error: stdlib.h: No such file or directory

解决办法是在/build目录下的cmake中添加指令-D ENABLE_PRECOMPILED_HEADERS=OFF

或者在cmake-gui界面中将ENABLE_PRECOMPILED_HEADERS取消勾选

 error: ‘NppiGraphcutState’ has not been declared typedef NppStatus (sudo make compile )

解决方法是打开下面的.cpp文件

/home/lvv/Downloads/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp

将#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)

改为:

#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)

 修改后如下图

Note: Class l has more than 1 base class (not supported by Python C extensions)
Bases: cv::a, cv:😒, cv:😒, cv::A, cv::l, cv::g, cv:😮, cv::r, cv::i, cv::t, cv::h, cv::m
Only the first base class will be used
Generator error: constant l_MAGIC_VAL (cname=cv::l::MAGIC_VAL) already exists

解决方法是在/build目录下的cmake中添加指令 -DBUILD_opencv_python2=OFF -DBUILD_opencv_pyhton3=OFF

或者在cmake-gui界面中将BUILD_opencv_python2和BUILD_opencv_pyhton3取消勾选

#error -- unsupported GNU version! gcc versions later than 8 are not supported!

这个报错意思是gcc版本不能高于8

所以安装gcc-8及g++-8

sudo apt-get install g++-8
sudo apt-get install gcc-8

安装成功后设置gcc与g++各版本的优先级,数字越小优先级越高,默认的优先级为50,故设置的比50小即可,这里选择20:

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 20

通过sudo update-alternatives --config gcc

sudo update-alternatives --config g++

可查看电脑上gcc与g++的可供选择版本,也可以通过上述命令手动选择编译所用版本

CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
CUDA_nppi_LIBRARY (ADVANCED)

linked by target “opencv_cudev“ in directory /home/davidhopper/opencv/opencv-3.1.0/

解决办法看这个链接https://blog.csdn.net/m0_69253695/article/details/143068384?spm=1001.2014.3001.5502

nvcc fatal   : Unsupported gpu architecture 'compute_20'
CMake Error at cuda_compile_generated_gpu_mat.cu.o.cmake:206 (message):
  Error generating
  /home/danalelixin/Desktop/opencv-3.2.0/build/modules/core/CMakeFiles/cuda_compile.dir/src/cuda/./cuda_compile_generated_gpu_mat.cu.o

老毛病,还是cuda9不支持2.0架构了。/build目录下的cmake中添加指令

D CUDA_GENERATION=Kepler

opencv-3.1.0/modules/videoio/src/cap_ffmpeg_impl.hpp:1313:21: error: ‘CODEC_FLAG_GLOBAL_HEADER’ was not declared in this scope
         c->flags |= CODEC_FLAG_GLOBAL_HEADER;

opencv-3.1.0/modules/videoio/src/cap_ffmpeg_impl.hpp:1525:35: error: ‘AVFMT_RAWPICTURE’ was not declared in this scope

就是ffmpeg新版本对老版本中的一些关键字的支持变了。
打开文件opencv/modules/videoio/src/cap_ffmpeg_impl.hpp ,在里面添加

#define AV_CODEC_FLAG_GLOBAL_HEADER (1 << 22)
#define CODEC_FLAG_GLOBAL_HEADER AV_CODEC_FLAG_GLOBAL_HEADER
#define AVFMT_RAWPICTURE 0x0020

重新cmake,有的时候添加语句后,还是没用,可能是添加在文件中的位置不对,换一个位置就好了,建议放在.hpp的最开头

 

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

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

相关文章

驱动-----内核启动

目录 一、最小系统 二.操作系统 三.操作系统的启动 四.linux启动准备工作 五.安装nfs和tftp环境 六.总结 设备驱动:驱使设备行动的程序。 裸机程序:没有和操作系统结合的驱动程序pwm.c,uart.c,adc.c 有操作系统的时候,应用层不能直接操作硬件,由底层写驱动的人写…

凹凸性和拐点的概念

二阶导不存在也可能是拐点 判断拐点的充分条件

第三十一篇:TCP协议如何解决丢包的问题,TCP系列六

前面我们说TCP协议是可靠的、基于字节流、面向连接的传输层通信协议&#xff1b; 这里我想换种说法&#xff1a;与其说是TCP协议是可靠的&#xff0c;不如说传输层程序软件实现了TCP协议的规范&#xff08;网络层次模型&#xff0c;每一层都有对应的程序软件&#xff09;&…

【从零开始的LeetCode-算法】3185. 构成整天的下标对数目 II

给你一个整数数组 hours&#xff0c;表示以 小时 为单位的时间&#xff0c;返回一个整数&#xff0c;表示满足 i < j 且 hours[i] hours[j] 构成 整天 的下标对 i, j 的数目。 整天 定义为时间持续时间是 24 小时的 整数倍 。 例如&#xff0c;1 天是 24 小时&#xff0c…

ApacheShiro反序列化 550 721漏洞

Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理个漏洞被称为 Shiro550 是因为在Apache Shiro的GitHub问题跟踪器中&#xff0c;该漏洞最初被标记为第550个问题,721漏洞名称也是由此而来 Shiro-550 CVE-2016-4437 Shiro反序列化Docker复现 …

重学SpringBoot3-Spring WebFlux之HttpHandler和HttpServer

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 重学SpringBoot3-Spring WebFlux之HttpHandler和HttpServer 1. 什么是响应式编程&#xff1f;2. Project Reactor 概述3. HttpHandler概述3.1 HttpHandler是什么3.2 Http…

Flink 1.18安装 及配置 postgres12 同步到mysql5.7(Flink sql 方式)

文章目录 1、参考2、flink 常见部署模式组合3、Standalone 安装3.1 单节点安装3.2 问题13.3 修改ui 端口3.4 使用ip访问 4 flink sql postgres --->mysql4.1 配置postgres 124.2 新建用户并赋权4.3. 发布表4.4 Flink sql4.5 Could not find any factory for identifier post…

落实“双碳”行动,深兰科技推动分子能源技术在AI硬件产品领域的应用及产业化进程

10月21日&#xff0c;上海气候周分子能研究中心(筹)成立仪式在上海环境能源交易所举行。仪式上&#xff0c;深兰科技践行“双碳”目标&#xff0c;与上海东八能源技术有限公司签署分子能源AI应用产业化合作协议。 根据协议&#xff0c;国际分子能量发电开拓者、上海气候周分子能…

Notepad++将搜索内容所在行选中,并进行复制等操作

背景 Notepad在非常多的数据行内容中&#xff0c;按照指定内容检索&#xff0c;并定位到具体行&#xff0c;而后对内容行的数据进行复制、剪切、删除等处理动作。 操作说明 检索并标记所在行 弹出搜索框&#xff1a;按下 Ctrl F。 输入查找字符串&#xff1a;在搜索框中输入要…

YOLOv11入门到入土使用教程(含结构图)

一、简介 YOLOv11是Ultralytics公司在之前的YOLO版本上推出的最新一代实时目标检测器&#xff0c;支持目标检测、追踪、实力分割、图像分类和姿态估计等任务。官方代码&#xff1a;ultralytics/ultralytics&#xff1a;ultralytics YOLO11 &#x1f680; (github.com)https://g…

【小洛的VLOG】Web 服务器高并发压力测试(Reactor模型测试)

目录 引言 工具介绍 环境介绍 测试结果 个人主页&#xff1a;东洛的克莱斯韦克-CSDN博客 引言 大部分的网络通信都是支持TCP/IP协议栈&#xff0c;为了保证通信的可靠性&#xff0c;客户端和服务端之间需要建立链接。服务端能并发处理多少个链接&#xff0c;平均每秒钟能处理…

QML----Webengineview点击网页上的下载没反应,下载文件

问题 使用webe加载网页时&#xff0c;点击下载页面会没有反应。原因就是它默认是关闭下载功能 解决 需要在profile里监听下载事件打开onDownloadRequested,当有下载时会触发这个信号,会获取到一个WebEngineDownloadItem这是下载的东西,查询它的一些相关参数,可以修改路径和开…

项目一:3-8译码器的设计与实现(FPGA)

本文以Altera公司生产的Cyclone IV系列的EP4CE15F17C8为主芯片的CRD500开发板作为项目的硬件实现平台&#xff0c;并以Quarter 18.1和ModelSim为开发工具和仿真工具。 目录 一、3-8译码器工作原理 二、设计步骤 1、创建工程文件夹和编辑设计文件 &#xff08;1&#xff09;…

(三)将PaddleOCR编译成dll通过Java调用实现ocr识别

说明&#xff1a; 本文编译的PaddleOCR版本&#xff1a;v2.8.1&#xff0c;关于windows下如何生成c项目及如何编译PaddleOCR请参照我的上一篇文章《&#xff08;二&#xff09;Windows通过vs c编译PaddleOCR-2.8.1-CSDN博客》&#xff0c;本文是上一个篇文章的延伸。 背景&…

douyin uid转sec_uid 各种进行转换

第一步输入uid&#xff1a; 进行转换&#xff1a; 同时支持接口转换&#xff0c;批量转换&#xff0c;是一个很实用的工具 uid转sec_uid

微信小程序上传图片添加水印

微信小程序使用wx.chooseMedia拍摄或从手机相册中选择图片并添加水印&#xff0c; 代码如下&#xff1a; // WXML代码&#xff1a;<canvas canvas-id"watermarkCanvas" style"width: {{canvasWidth}}px; height: {{canvasHeight}}px;"></canvas&…

如何使用 Spring Cloud 实现客户端负载平衡

微服务系统通常运行每个服务的多个实例。这是实施弹性所必需的。因此&#xff0c;在这些实例之间分配负载非常重要。执行此操作的组件是负载均衡器。Spring 提供了一个 Spring Cloud Load Balancer 库。在本文中&#xff0c;您将学习如何使用它在 Spring Boot 项目中实现客户端…

QPainterPath路径类

函数drawPath()绘制的是一个复合的图形&#xff0c;它使用一个QPainterPath类型的参数作为绘图的对象,QPainterPath类用于记录绘图的操作顺序&#xff0c;优点是绘制复杂图形时只需要创建一个painterpath,然后重复调用就可以了 在使用QPainterPath把路径画好之后&#xff0c;我…

脚本-把B站缓存m4s文件转换成mp4格式

js脚本&#xff0c;自动处理视频 1. 需求简介1.1 pc安装b站客户端1.2 设置视频缓存目录1.3 找个视频缓存1.4 打开缓存文件夹![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/0eb346a84d5f42a7908f1d39bf410c3b.png)1.5 用notepad编辑后缀m4s文件&#xff0c;删除文件内…

Windows系统启动MongoDB报错无法连接服务器

文章目录 发现问题解决办法 发现问题 1&#xff09;、先是发现执行 mongo 命令&#xff0c;启动报错&#xff1a; error: MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017&#xff1b; 2&#xff09;、再检查 MongoDB 进程 tasklist | findstr mongo 发现没有进程&a…