【嵌入式IMAGE 3】opencv的搭建

news2025/2/12 0:54:22

1. OpenCV源代码下载地址

https://opencv.org/releases/

 2. 在windows平台编译(mingw版本)

        2.1 下载cmake

https://cmake.org/files/

        2.2 配置编译器环境变量

         2.3 打开cmake-gui.exe

 
a.Use default native compilers 使用默认的本机编译器
b.Specify native compilers 指定本机编译器
c.Specify toolchain file for cross-compiling 指定用于交叉编译的工具链文件
d.Specify options for cross-compiling  指定交叉编译的选项

 

 之后开始配置

 配置完成后,会出现许多的选项这里我只选择opencv中最核心的功能其他暂不使用

  2.4 一些系统自动勾选的选项说明

BUILD_JAVA是一个CMake选项,用于控制在编译OpenCV库时是否编译Java API

BUILD_JPEG:控制是否编译支持JPEG格式图像的模块。

BUILD_OPENJPEG:控制是否编译支持OpenJPEG格式图像的模块。

BUILD_PACKAGE:控制是否构建软件包。

BUILD_PERF_TESTS:控制是否编译性能测试。启用此选项会增加编译时间.

BUILD_PNG:控制是否编译支持PNG格式图像的模块。

BUILD_PROTOBUF:控制是否编译支持Google Protobuf格式数据的模块。

BUILD_SHARED_LIBS:控制是否编译共享库。

BUILD_TESTS:控制是否编译单元测试。启用此选项会增加编译时间。

BUILD_TIFF:控制是否编译支持TIFF格式图像的模块。

BUILD_WEBP:控制是否编译支持WebP格式图像的模块。

BUILD_ZLIB:控制是否编译支持zlib格式数据的模块。

CPACK_BINARY_NSIS:启用NSIS二进制打包,用于在Windows上构建安装程序。

CPACK_SOURCE_7Z:在发布包中包含7z格式的源代码.

CPACK_SOURCE_ZIP:在发布包中包含zip格式的源代码。

CV_ENABLE_INTRINSICS:启用底层硬件指令优化,加快运行速度。

CV_TRACE:启用OpenCV跟踪功能,可以输出调试信息到控制台。

DNN_ENABLE_PLUGINS:启用DNN模块的插件机制。

ENABLE_LIBJPEG_TURBO_SIMD:在处理JPEG图像时,启用libjpeg-turbo SIMD指令加速。

ENABLE_OMIT_FRAME_POINTER:启用-fomit-frame-pointer编译器选项,减少OpenCV库的代码大小。

ENABLE_PIC:启用-fPIC编译选项,生成位置无关代码,用于生成共享库。

HIGHGUI_ENABLE_PLUGINS:启用HighGUI模块的插件机制。

OPENCL_FOUND:启用OpenCL支持。

OPENCV_DNN_OPENVINO:启用OpenVINO专用DNN模块。

OPENCV_ENABLE_ALLOCATOR_STATS:启用OpenCV的内存分配器统计。

OPENCV_ENABLE_ATOMIC_LOG_LONG:启用线程安全的Atomic<int64_t>变量。

OPENCV_ENABLE_MEMALIGN:启用和aligned_malloc之间的切换。

OPENCV_GENERATE_SETUPVARS:在可安装包中包含一个顶级的setupvars脚本。

OPJ_USE_THREAD:启用OpenJPEG的多线程处理。

PARALLEL_ENABLE_PLUGINS:启用Parallel模块的插件机制。

USE_WIN32_FILEIO:强制使用Win32文件I / O。

VIDEOIO_ENABLE_PLUGINS:启用Video I/O模块的插件机制。

   2.5 核心功能选项说明(下面标黄的为最核心的核心功能)

BUILD_opencv_calib3d:控制是否编译相机标定和三维重建等计算机视觉相关的模块。

BUILD_opencv_core:控制是否编译包含图像处理函数、数学运算函数等基础功能的模块。

BUILD_opencv_dnn:控制是否编译深度神经网络相关的模块。

BUILD_opencv_features2d:控制是否编译特征检测和描述子提取等计算机视觉相关的模块。

BUILD_opencv_flann:控制是否编译快速近似最近邻搜索库。

BUILD_opencv_gapi:控制是否编译通用加速编程接口。

BUILD_opencv_highgui:控制是否编译用户界面操作、显示图像等模块。

BUILD_opencv_imgcodecs:控制是否编译读写图像文件相关的模块。

BUILD_opencv_imgproc:控制是否编译包含形态学、滤波、边缘检测等图像处理函数的模块。

BUILD_opencv_java_bindings_generator:控制是否编译为Java生成API绑定。

BUILD_opencv_js_bindings_generator:控制是否为JS生成API绑定。

BUILD_opencv_ml:控制是否编译机器学习相关的模块。

BUILD_opencv_objc_bindings_generator:控制是否为Objective-C生成API绑定。

BUILD_opencv_objdetect:控制是否编译人脸检测、行人检测等目标检测相关的模块。

BUILD_opencv_photo:控制是否编译包含颜色校正、图像融合、图像去噪等图像处理函数的模块。

BUILD_opencv_python_bindings_generator:控制是否为Python生成API绑定。

BUILD_opencv_python_tests:控制是否编译Python单元测试。

BUILD_opencv_stitching:控制是否编译图像拼接相关的模块。

BUILD_opencv_ts:控制是否编译OpenCV的测试套件。

BUILD_opencv_video:控制是否编译视频处理相关的模块。

BUILD_opencv_videoio:控制是否编译读写视频文件相关的模块。

    2.6 WITH选项说明

WITH_1394:启用1394摄像机支持。

WITH_ADE:启用ADE影像库支持。

WITH_ARITH_DEC:启用Arithmetic Code Decoding支持。

WITH_ARITH_ENC:启用Arithmetic Code Encoding支持。

WITH_DIRECTX:启用DirectX支持。

WITH_DSHOW:启用DirectShow支持。

WITH_EIGEN:启用Eigen支持,这是一个开源的线性代数库。

WITH_FFMPEG:启用FFmpeg支持,用于读取和写入各种音频视频文件格式。

WITH_GSTREAMER:启用GStreamer支持,该协议库提供了音频和视频媒体框架。

WITH_IMGCODEC_HDR:启用HDR图像格式编解码支持。

WITH_IMGCODEC_PFM:启用PFM图像格式编解码支持。

WITH_IMGCODEC_PXM:启用PXM图像格式编解码支持。

WITH_IMGCODEC_SUNRASTER:启用Sun Raster图像格式编解码支持。

WITH_ITT:启用Intel Thread Profiler支持。

WITH_JASPER:启用Jasper支持,用于JPEG2000像格式的编解码。

WITH_JPEG:启用JPEG图像格式的编解码。

WITH_LAPACK:启用LAPACK支持,用于线性代数计算。

WITH_OBSSENSOR:启用OBSSensor支持,用于识别运动物体。

WITH_OPENCL:启用OpenCL支持,用于开启计算机视觉和数字信号处理算法的并行处理。

WITH_OPENCLAMDBLAS:启用AMD OpenCL BLAS库支持。

WITH_OPENCLAMDFFT:启用AMD OpenCL FFT库支持。

WITH_OPENCL_D3D11_NV:启用NVIDIA Direct3D 11与OpenCL交互支持。

WITH_OPENEXR:启用OpenEXR支持,用于高动态范围图像的编解码。

WITH_OPENJPEG:启用OpenJPEG支持,用于JPEG2000图像格式的编解码。

WITH_PNG:启用PNG图像格式的编解码。

WITH_PROTOBUF:启用Google Protobuf支持,用于序列化和反序列化。

WITH_PTHREADS_PF:启用Linux和BSD线程支持。

WITH_QT:启用Qt支持,用于创建图形界面应用程序。

WITH_QUIRC:启用QR码生成与解码支持。

WITH_TIFF:启用TIFF图像格式的编解码。

WITH_VTK:启用VTK支持,用于创建复杂三维模型并进行可视化。

WITH_WEBP:启用WebP图像格式的编解码。

WITH_WIN32UI:启用Win32 UI支持,用于创建Windows应用程序的图形用户界面。

     2.6 其他选项说明

CCITT:使用CCITT Group 3或Group 4压缩算法,用于黑白图像压缩。

LGLUV:使用LGLUV色彩空间,用于压缩图像色彩。

LZW:使用LZW压缩算法,用于压缩TIFF格式图像。

MDI:使用MDI压缩算法,这是一种特定于Apple QuickDraw的压缩算法。

NEXT:使用NEXT压缩算法,这是一种特定于NeXT系统的压缩算法。

PACKBITS:使用PACKBITS压缩算法,用于压缩TIFF格式图像。

THUNDER:使用THUNDER压缩算法,这是一种特定于Thunder Scan的压缩算法

        2.7 再次点击Configure之后,红色消失,最后点击Generate

         2.8 找到build文件夹开始编译

mingw32-make

 mingw32-make.exe install

3.结束

成功编译了3个核心模块 其他模块功能之后要用在编译即可

4.总结

    编译opencv时要清先搞清楚每一个选项的作用,每一个选项的含义。

    ubuntu端和设备端整体步骤类似,只要清楚每一步要去干什么,便不会在编译上遇到问题,遇到问题也知道方向。

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

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

相关文章

MyBatis(全)

文章目录 什么是MyBatis?MyBatis快速入门查询user表中所有数据 Mapper代理开发使用Mapper代理方式完成入门案例 MyBatis核心配置文件配置文件完成增删改查案例&#xff1a;完成品牌数据的增删改查操作准备环境查询-查询所有数据查询-查看详情查询-条件查询--1.多条件查询方法1…

css移动端

目录 谷歌模拟器 屏幕分辨率 视口 二倍图 适配方案 rem 简介 问题 媒体查询 移动端 设备宽度不同&#xff0c;HTML标签字号设置多少合适 flexible.js rem-移动端适配 less 注释 运算 嵌套 变量 导入 导出 禁止导出 谷歌模拟器 模拟移动设备&#xff0c;方…

MySQL Community Server的安装配置教程(Windows版本)

&#xff08;1&#xff09;了解MySQL Community Server&#xff1a; MySQL Community Server是开源的MySQL数据库服务的名称。它是MySQL AB在2000年推出的一个开源数据库服务器&#xff0c;现在由Oracle公司维护和管理。 MySQL Community Server是一个关系型数据库系统&#…

通讯录管理系统(cpp)

一 系统需求 主要用C来实现一个通讯录管理系统 需要包含以下功能 添加联系人&#xff1a;向通讯录中添加新人&#xff0c;信息包括姓名、性别、年龄、联系电话、家庭住址&#xff0c;最多记录1000人显示联系人&#xff1a;显示通讯录中所有联系人信息删除联系人&#xff1a;按…

【Spring】— 动态SQL :MyBatis的关联映射

目录 MyBatis的关联映射1、关联关系概述2、MyBatis中的关联关系2.1 一对一2.2 一对多2.3 多对多 MyBatis的关联映射 在实际应用中&#xff0c;对数据库的操作会涉及多张表&#xff0c;这在面向对象中就涉及对象与对象之间的关联关系。针对多表之间的操作&#xff0c;MyBatis提…

全志V3S嵌入式驱动开发(wifi驱动)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 荔枝派上面除了支持v3s自带的有线网口&#xff0c;还带有一个支持sd协议的esp 8089 wifi模块。有了这个模块&#xff0c;v3s没有网线&#xff0c;也…

chatgpt赋能python:Python程序与SEO:如何建立程序使您的网站优化更好

Python程序与SEO&#xff1a;如何建立程序使您的网站优化更好 今天&#xff0c;越来越多的网站和在线业务转向搜索引擎优化&#xff0c;以吸引更多访问者和客户。Python编程语言是一种快速、灵活、易于学习的工具&#xff0c;如果正确使用它可以使您的网站SEO更好。下面我们来…

【从删库到跑路】MySQL系列——数据库的介绍MySQL的启动

&#x1f38a;专栏【MySQL】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【如愿】 大一同学小吉&#xff0c;欢迎并且感谢大家指出我的问题&#x1f970; 文章目录 &#x1f354;什么是数据库⭐组成⭐数据库的优势 &#x1f35…

Spring Security--自动登录

也就是remember me 在配置链上加一个 然后发送请求时加上:remember-me字段 value值可以为&#xff0c;ture&#xff0c;1&#xff0c;on 我们记住登录后&#xff0c;关掉浏览器再打开&#xff0c;访问一下接口&#xff0c;可以访问&#xff0c;说明记住登录成功了。 因为有的…

Spring中Bean的生命 周期与作用域

文章目录 前言Bean的作用域概念Bean作用域类型1. singleton&#xff1a;单例作⽤域2. prototype&#xff1a;原型作⽤域&#xff08;多例作⽤域&#xff09;3. request&#xff1a;请求作⽤域4. session&#xff1a;回话作⽤域5. application&#xff1a;全局作⽤域6. websocke…

51单片机实训项目之“红外控制小风扇”代码详解

本代码实现的功能是通过红外遥控来控制风扇的转速。废话不多说&#xff0c;直接上代码。 另外补充一点红外通信的原理&#xff1a; 红外接收 NEC协议&#xff1a; 数据格式 发射端的方波图&#xff0c;接收端的正好与之相反&#xff0c;数据传输从最低位开始 NEC 标准下…

mqtt.fx连接阿里云物联网平台

这里写目录标题 注册公共示例创建产品添加设备创建云产品流转生成基本信息配置mqtt.fx客户端数据传送 前提条件&#xff1a;下载mqtt.fx软件&#xff0c;以及注册好阿里云物联网平台账号 本实验用两个mqtt.fx客户端接入阿里云物联网平台&#xff0c;来实现不同设备间消息的传输…

大数据Doris(四十):Routine Load基本原理和语法介绍

文章目录 Routine Load基本原理和语法介绍 一、基本原理 二、Routine Load 语法 Routine Load基本原理和语法介绍 例行导入(Routine Load)功能,支持用户提交一个常驻的导入任务,通过不断的从指定的数据源读取数据,将数据导入到 Doris 中。目前Rou

chatgpt赋能python:如何使用Python获取Listview

如何使用Python获取Listview 在现代数据驱动的世界中&#xff0c;处理大量数据已经成为一项关键技能。准确地说&#xff0c;操作大量数据要比操作一小部分数据要困难得多。Python是一门非常出色的编程语言&#xff0c;它的处理大量数据的能力无人能敌。在这篇文章中&#xff0…

MySQL面试题详解

优化 如何定位慢查询 mysql中慢查询通常发生在以下几种情况&#xff0c;聚合查询&#xff0c;多表查询&#xff0c;表数据量过大查询&#xff0c;深度分页查询。 表象&#xff1a;页面加载过慢&#xff0c;接口压测响应时间过长(超过1s) 定位慢查询的方法主要有两种。方法一…

Windows 下编译 OpenCV 和 OpenCV-contrib

文章目录 导言环境准备源码获取环境获取 配置 CMake 并编译ConfigureGenerate 生成项目总结 导言 在本文中&#xff0c;我们将介绍如何在 Windows 系统下编译 OpenCV 和 OpenCV-contrib。OpenCV 是一个开源的计算机视觉库&#xff0c;它包含了许多图像处理和计算机视觉的功能。…

gismo调试-组总刚

文章目录 前言一、1 组总刚main文件的断点2 跳转到gsElasticityAssembler.hpp3 gsElasticityAssembler.hpp的177行进入gsVisitorLinearElasticity.h4 进入gsAssembler.h重新进入gsVisitorLinearElasticity.h进入gsSparseSystem.h1.14 进入gsAssembler.h1.21.31.4 二、2.12.22.3…

Cracking C++(11): CMake代码高亮调研

文章目录 1. 目的2. VSCode 插件CMake 和 CMake ToolsCMake Language SupportCMake Highlights 3. JetBrains 系列3.1 CLion3.2 Fleet 4. Kate5. Sublime Text6. 总结 1. 目的 CMake 已经是开源 C 项目的主流 building system&#xff0c; 这里简单调研关注的编辑器 / IDE 下&…

Jetson nano 进阶教程4_通过IIC输出PWM

Jetson nano 进阶教程4_通过IIC输出PWM Jetson nano的40PIN不能直接发出PWM波&#xff0c;在很多控制舵机&#xff0c;电机调速方面很不方便&#xff0c;因此利用一块PCA9685模块&#xff0c;通过I2C总线控制PCA9685输出pwm波&#xff0c;并且可以调整占空比。 How do I use P…

Android Activity启动过程详解

目录 一&#xff0c;背景介绍 二&#xff0c;Activity启动过程 2.1 调用 ATMS 系统进程 2.1.1 时序图 2.1.2 Launcher 桌面的 App 图标入口 2.1.3 startActivitySafely() 方法 2.1.4 execStartActivity() 方法 2.2 ATMS 向 AMS 发送创建应用进程的过程 2.2.1 时序图 …