Opencv 源码编译以及调用相关

news2024/12/23 20:12:02

查看Ubuntu上面已经安装的opencv的版本

pkg-config --modversion opencv

源码编译

  • 源码下载, 注意其中的batch, 选择一致。
git clone https://github.com/opencv/opencv.git
# 下面的仓库为第三方库,可以根据需要选择
git clone https://github.com/opencv/opencv_contrib.git

openEuler上源码安装

  • 安装依赖
sudo dnf install eigen3
sudo dnf install cmake g++

比较简单的编译选项

mkdir build 
cd build 

cmake -D CMAKE_BUILD_TYPE=RELEASE \
        -D CMAKE_INSTALL_PREFIX=/usr/local \
        -D INSTALL_PYTHON_EXAMPLES=OFF \
        -D INSTALL_C_EXAMPLES=OFF \
        -D OPENCV_ENABLE_NONFREE=ON \
        -D BUILD_NEW_PYTHON_SUPPORT=ON \
        -D OPENCV_GENERATE_PKGCONFIG=ON \
        -D OPENCV_PC_FILE_NAME=opencv4.pc \
        -D WITH_TBB=ON \
        -D ENABLE_FAST_MATH=1 \
        -D CUDA_FAST_MATH=1 \
        -D WITH_CUBLAS=1 \
        -D WITH_CUDA=ON \
        -D BUILD_opencv_cudacodec=OFF \
        -D WITH_CUDNN=OFF \
        -D OPENCV_DNN_CUDA=OFF \
        -D CUDA_ARCH_BIN=7.5 \
        -D WITH_V4L=ON \
        -D WITH_QT=OFF \
        -D WITH_OPENGL=ON \
        -D WITH_QT=OFF \
        -D WITH_GSTREAMER=OFF \
        -D WITH_FFMPEG=OFF \
        -D WITH_OPENCL=ON \
        -D OPENCV_ENABLE_NONFREE=ON \
        -D ENABLE_PRECOMPILED_HEADERS=YES \
        -D EIGEN_INCLUDE_PATH=/usr/include/eigen3 \
        -D BUILD_EXAMPLES=OFF ..

cmake --build ./ -j

#安装的路径为指定的 CMAKE_INSTALL_PREFIX=/usr/local 路径 
cmake --install ./


关于其中的 -j 选项说明

关于-j选项的几点说明:
1. -j后跟的数字表示要使用的最大线程数。CMake会根据系统 cpu 核数和其他限制自动确定实际要使用的线程数。
2. 如果不指定-j,CMake会自动根据系统环境设置默认的线程数。通常等于cpu核数加一。
3. 指定的最大线程数-j值不代表CMake一定会使用指定数量的线程。它会根据项目设置、依赖关系等因素自动调节实际使用的线程数,但不会超过指定的最大值。
4. -j的值设置得太高不一定能提高构建速度,反而可能对I/O造成压力而降低效率。通常设置为cpu核数的1-2倍就可以达到较好的效果。
5. 在多核系统下,合理设置-j值可以充分利用cpu并行能力,提高构建速度。但在单核系统下,设置-j反而可能延长构建时间,推荐省略-j选项让CMake自动判断。

选定视频编解码框架编译到opencv中

安装gstreamer

sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-doc gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio


# 检查安装
pkg-config --cflags --libs gstreamer-1.0

安装ffmpeg

sudo apt install ffmpeg
sudo apt-get install libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libavresample-dev

编译配置

cd opencv
mkdir buildcd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D BUILD_EXAMPLES=OFF \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D INSTALL_C_EXAMPLES=OFF \
-D PYTHON_EXECUTABLE=$(which python2) \
-D BUILD_opencv_python2=OFF \
-D PYTHON3_EXECUTABLE=$(which python3) \
-D PYTHON3_INCLUDE_DIR=$(python3 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") \
-D PYTHON3_PACKAGES_PATH=$(python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules/ \
-D WITH_GSTREAMER=ON \
-D WITH_FFMPEG=ON \
-D WITH_CUDA=ON \
 ..

查看已经安装的opencv库的编译选项

import cv2
print(cv2.getBuildInformation())

关于OpenGL的软件包的支持

sudo apt install mesa-utils
glxinfo | grep OpenGL

在这里插入图片描述

可以参考的编译脚本

  • https://github.com/opencv/opencv/issues/22132

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

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

相关文章

npm install --save-dev electron报错

报错: 清除一下缓存,并删除掉node_module npm cache clean --force切换cnpm安装 npm install -g cnpm --registryhttps://registry.npm.taobao.org安装electron cnpm i electron --save-d安装成功!

PHP 音乐网站系统mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP 音乐网站系统 是一套完善的web设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为PHP APACHE,数据库为 mysql5.0,使用php语言开发。 源码…

为按钮和表单绑定事件常用的两种方式

文章目录 前言一、常用事件二、常用事件绑定方式一三、常用事件绑定方式二四、onsubmit()表单事件特别绑定方式4.1 事件绑定方式一使得onsubmit()真正起效 五、常见事件绑定小Bug绑定事件一不规范引发的Bug绑定事件二不规范引发的Bug 前言 在编写代码时,我们难免需要…

VUE使用v-html解析失败和解决方案

有些时候我们拿到后端返回内容进行v-html解析的时候,会发现解析之后,页面展示的还是html内容,我分析了我遇到的情况,希望能帮到大家。 原因:是因为后端返回数据的时候没有对内容进行html做转义,导致页面输出…

爬虫入门指南:学习爬虫的基础知识和技巧

文章目录 爬虫基础知识什么是爬虫?爬虫的工作原理爬虫的应用领域 爬虫准备工作安装Python安装必要的库和工具 网页解析与XPath网页结构与标签CSS选择器与XPathXpath 语法XPath的基本表达式:XPath的谓语(Predicate):XPa…

数据挖掘与数据分析之统计知识篇

1、自由度是什么?怎么确定? 统计学上,自由度是指当以样本的统计量估计总体的参数时,样本中独立或能自由变化的数据个数叫自由度。一般来说,自由度等于独立变量减掉其衍生量数。举例来说,变异数的定义是样本…

Revit U型墩柱的绘制方法和生成柱方法

一、Revit U型墩柱的绘制方法 这里教大家一个墩柱的绘制步骤,我们采用一级等级考试第八期中的U型墩柱试题来给大家演示绘制步骤。 首先我们要明白这里需要采用族样板来绘制,新建一个族样板打开我们的公制常规模型样板 进入立面绘制题目中所需要的参照先&…

java基础(并发编程)-设计模式~同步模式之保护性暂停

一、同步模式之保护性暂停定义 保护性暂停即Guarded Suspension,用在一个线程等待另一个线程的执行结果。 要点 有一个结果需要从一个线程传递到另一个线程,让他们关联到同一个Guarded Object。如果有结果不断从一个线程到另一个线程,那么…

Covex combination和affine combination

Covex combination和affine combination是两种常见的线性组合方法。 Covex combination(凸组合)是指在线性组合中,所有权重(coefficients)取非负值且总和为1的情况。也就是说,对于给定的一组向量或点集合&…

Linux系统编程:详解进程地址空间

目录 一. 进程空间的布局 二. 进程地址空间 2.1 早期CPU访问物理内存的方式 2.2 什么是虚拟地址(进程地址空间) 2.3 操作系统对地址空间的管理方法 三. 地址空间存在的意义 四. 总结 一. 进程空间的布局 在语言层面学习C/C时,根据变量…

android studio 单独运行java 文件

首先&#xff0c;创建一个新的java文件。 然后&#xff0c;在Test.java文件中写上如图所示的代码。 接下来&#xff0c;我们把目录模式从Android转换成Project。 打开.idea文件夹下的gradle.xml文件。 在gradle.xml文件中添加上红色方框中的内容。 <option name"delega…

MySQL GROUP BY 多个字段的用法说明

MySQL GROUP BY 多个字段的用法说明 1. 说明2. 举例附录 1. 说明 在 mysql 中使用 group by 的意思是分组查询。如果 group by 后面跟的是单个字段&#xff0c;那么表示按照这个字段分组查询&#xff0c;如果 group by 后面跟的是多个字段&#xff0c;那么表示按照这些字段的不…

关于使用idea中遇到给Dependencies没有加入jar包,但是在war_exploded中lib有

lib文件夹无jar包 Dependencies无jar包 war_exploded中存在此jar 原因是在此有jar包 当去掉时

深入解析 css.1.5

❑ 控制选择器的优先级。 ❑ 不要混淆层叠和继承。 ❑ 某些属性会被继承&#xff0c;包括文本、列表、表格边框相关的属性。 ❑ 不要混淆initial和auto值。 initial是一个CSS属性的初始值&#xff0c;它会将属性的值重置为浏览器默认值。例如&#xff0c;如果将background-co…

其实失败才是人生常态,赢者通吃确实存在,但那不代表绝大多数人。

其实失败才是人生常态&#xff0c;赢者通吃确实存在&#xff0c;但那不代表绝大多数人。 &#x1f4e2;今年的就业难度可能是之前5年最难的一年&#xff0c;也有可能是以后5年最好的一年。 &#x1f4e2;&#x1f4e2;疫情的回落&#xff0c;仿佛只带动了旅游业的发展&#x…

在EasyCVR中调用快照接口返回404是什么原因?如何解决?

EasyCVR视频融合平台基于云边端一体化架构&#xff0c;能在复杂的网络环境中将前端设备进行统一集中接入&#xff0c;实现视频资源的汇聚管理、直播鉴权、转码处理、多端分发、智能告警、数据共享等能力与服务。此外&#xff0c;平台也提供了丰富的API接口供用户自由调用、集成…

【XKCD】XKCD 风格的图像

目录 1. XKCD 2. 实战 1. XKCD xkcd是一种风格独特的漫画风格&#xff0c;以幽默、讽刺、科学和技术为主题。这种风格通常采用简单的线条和草图&#xff0c;表达出作者的思考和观点。xkcd的图像经常涉及科学、数学、计算机科学、社会和文化问题&#xff0c;以及作者个人的生…

181_带你体验 Power BI 开发者模式 pbip

181_带你体验 Power BI 开发者模式 pbip 一、背景 如果你是一个 Power BI 重度用户&#xff0c;你是不是也有如下的情况&#xff1f; 是的&#xff0c;Power BI 的版本控制全靠复制一份重命名来实现&#xff0c;而且版本之间的特点和差异时间久了就不记得了&#xff0c;还要加…

人工智能将怎样改变未来?TVP读书会带你探索!

引言 数十年前&#xff0c;图灵抛出的时代之问“机器能思考吗&#xff1f;”&#xff0c;将 AI 从科幻拉至现实&#xff0c;随着无数计算机科学先驱的共同努力&#xff0c;人工智能已经发展为引领未来的战略性技术。 AI 无处不在&#xff0c;智能时代触手可及&#xff0c;从 NL…

小程序 view clearfix 不起作用,边距还是被折叠

问题&#xff1a; 多个同级view情况下设置最后view clearfix&#xff0c;让底部露一些空白局域&#xff0c;此时clearfix不启作用。 .wxss .clearfix:before,.clearfix:after{content: "";clear: both;display: table;border-bottom: 1px solid black; } /*边距*/…