https://opencv.org/releases/
https://cmake.org/files/
a.Use default native compilers 使用默认的本机编译器
b.Specify native compilers 指定本机编译器
c.Specify toolchain file for cross-compiling 指定用于交叉编译的工具链文件
d.Specify options for cross-compiling 指定交叉编译的选项
之后开始配置
配置完成后,会出现许多的选项这里我只选择opencv中最核心的功能其他暂不使用
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
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模块的插件机制。
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:控制是否编译读写视频文件相关的模块。
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应用程序的图形用户界面。
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的压缩算法
mingw32-make
mingw32-make.exe install
成功编译了3个核心模块 其他模块功能之后要用在编译即可
编译opencv时要清先搞清楚每一个选项的作用,每一个选项的含义。
ubuntu端和设备端整体步骤类似,只要清楚每一步要去干什么,便不会在编译上遇到问题,遇到问题也知道方向。