OpenCV4 源码编译安装 | 记录

参考资料

环境

  • wsl2-ubuntu20.04
  • opencv4.5.5

步骤

  1. 安装GCC \ CMake \ make

    sudo apt install -y g++
    sudo apt install -y cmake
    sudo apt install -y make
  2. 下载源码

    github地址:https://github.com/opencv

    opencv官网:https://opencv.org/releases/

    注:opencv_contrib应与opencv版本号相同

  3. 编译安装

    注:可将opencv_contrib包放置在opencv文件夹内。

    创建build文件夹:

    cd opencv<>
    mkdir build && cd build

    配置cmake:

    cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_C_COMPILER=/usr/bin/gcc \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.5.5/modules/ \
    -D CUDA_CUDA_LIBRARY=/usr/local/cuda/lib64/stubs/libcuda.so \
    -D CUDA_ARCH_BIN=7.0 \
    -D CUDA_ARCH_PTX="" \
    -D WITH_CUDA=ON \
    -D WITH_TBB=ON \
    -D WITH_FFMPEG=ON \
    -D BUILD_PYTHON_SUPPORT=ON \
    -D BUILD_NEW_PYTHON_SUPPORT=ON \
    -D BUILD_OPENCV_PYTHON3=ON \
    -D WITH_V4L=ON \
    -D INSTALL_C_EXAMPLES=ON \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D BUILD_EXAMPLES=ON \
    -D WITH_QT=ON \
    -D WITH_GSTREAMER=ON \
    -D WITH_OPENGL=ON \
    -D ENABLE_FAST_MATH=1 \
    -D CUDA_FAST_MATH=1 \
    -D OPENCV_GENERATE_PKGCONFIG=ON \
    -D OPENCV_PC_FILE_NAME=opencv.pc \
    -D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-11.0 \
    -D CMAKE_LIBRARY_PATH=/usr/local/cuda/lib64/stubs \
    -D WITH_CUBLAS=ON \
    -D WITH_NVCUVID=ON \
    -D BUILD_opencv_cudacodec=ON \
    -D OPENCV_DNN_CUDA=ON \
    -D WITH_CUDNN=ON \
    -D OPENCV_ENABLE_NONFREE=ON\
    -D WITH_GSTREAMER=ON \
    -D PYTHON3_INCLUDE_DIR=/usr/include/python3.8 \
    -D PYTHON3_PACKAGES_PATH=/usr/lib/python3/dist-packages \
    -D BUILD_EXAMPLES=ON ..

    以上为配置参数示例,其中OPENCV_EXTRA_MODULES_PATHopencv_contrib文件夹路径。

    注:对于opencv4.5.5版本对于python的支持,建议增加-D PYTHON3_INCLUDE_DIR=/usr/include/python3.8,否则可能出现无法import cv2状况,具体原因未深究。

    配置完成结果实例如下:

    -- General configuration for OpenCV 4.5.5 =====================================
    -- Version control: unknown
    --
    -- Extra modules:
    -- Location (extra): /home/fish/opencv/opencv-4.5.5/opencv_contrib-4.5.5/modules
    -- Version control (extra): unknown
    --
    -- Platform:
    -- Timestamp: 2022-05-01T11:37:44Z
    -- Host: Linux 5.10.102.1-microsoft-standard-WSL2 x86_64
    -- CMake: 3.16.3
    -- CMake generator: Unix Makefiles
    -- CMake build tool: /usr/bin/make
    -- Configuration: RELEASE
    --
    -- CPU/HW features:
    -- Baseline: SSE SSE2 SSE3
    -- requested: SSE3
    -- Dispatched code generation: SSE4_1 SSE4_2 FP16 AVX AVX2 AVX512_SKX
    -- requested: SSE4_1 SSE4_2 AVX FP16 AVX2 AVX512_SKX
    -- SSE4_1 (18 files): + SSSE3 SSE4_1
    -- SSE4_2 (2 files): + SSSE3 SSE4_1 POPCNT SSE4_2
    -- FP16 (1 files): + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 AVX
    -- AVX (5 files): + SSSE3 SSE4_1 POPCNT SSE4_2 AVX
    -- AVX2 (33 files): + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 FMA3 AVX AVX2
    -- AVX512_SKX (8 files): + SSSE3 SSE4_1 POPCNT SSE4_2 FP16 FMA3 AVX AVX2 AVX_512F AVX512_COMMON AVX512_SKX
    --
    -- C/C++:
    -- Built as dynamic libs?: YES
    -- C++ standard: 11
    -- C++ Compiler: /usr/bin/c++ (ver 9.4.0)
    -- C++ flags (Release): -fsigned-char -ffast-math -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Wsuggest-override -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections -msse -msse2 -msse3 -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG -DNDEBUG
    -- C++ flags (Debug): -fsigned-char -ffast-math -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Wsuggest-override -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections -msse -msse2 -msse3 -fvisibility=hidden -fvisibility-inlines-hidden -g -O0 -DDEBUG -D_DEBUG
    -- C Compiler: /usr/bin/gcc
    -- C flags (Release): -fsigned-char -ffast-math -W -Wall -Werror=return-type -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections -msse -msse2 -msse3 -fvisibility=hidden -O3 -DNDEBUG -DNDEBUG
    -- C flags (Debug): -fsigned-char -ffast-math -W -Wall -Werror=return-type -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -Wno-long-long -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections -msse -msse2 -msse3 -fvisibility=hidden -g -O0 -DDEBUG -D_DEBUG
    -- Linker flags (Release): -Wl,--exclude-libs,libippicv.a -Wl,--exclude-libs,libippiw.a -Wl,--gc-sections -Wl,--as-needed
    -- Linker flags (Debug): -Wl,--exclude-libs,libippicv.a -Wl,--exclude-libs,libippiw.a -Wl,--gc-sections -Wl,--as-needed
    -- ccache: NO
    -- Precompiled headers: NO
    -- Extra dependencies: m pthread cudart_static dl rt nppc nppial nppicc nppidei nppif nppig nppim nppist nppisu nppitc npps cublas cudnn cufft -L/usr/local/cuda-11.0/lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/local/cuda/lib64
    -- 3rdparty dependencies:
    --
    -- OpenCV modules:
    -- To be built: aruco barcode bgsegm bioinspired calib3d ccalib core cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev datasets dnn dnn_objdetect dnn_superres dpm face features2d flann freetype fuzzy gapi hfs highgui img_hash imgcodecs imgproc intensity_transform line_descriptor mcc ml objdetect optflow phase_unwrapping photo plot python3 quality rapid reg rgbd saliency shape stereo stitching structured_light superres surface_matching text tracking ts video videoio videostab wechat_qrcode xfeatures2d ximgproc xobjdetect xphoto
    -- Disabled: world
    -- Disabled by dependency: -
    -- Unavailable: alphamat cvv hdf java julia matlab ovis python2 sfm viz
    -- Applications: tests perf_tests examples apps
    -- Documentation: NO
    -- Non-free algorithms: YES
    --
    -- GUI: GTK3
    -- QT: NO
    -- GTK+: YES (ver 3.24.20)
    -- GThread : YES (ver 2.64.6)
    -- GtkGlExt: NO
    -- OpenGL support: NO
    -- VTK support: NO
    --
    -- Media I/O:
    -- ZLib: /usr/lib/x86_64-linux-gnu/libz.so (ver 1.2.11)
    -- JPEG: /usr/lib/x86_64-linux-gnu/libjpeg.so (ver 80)
    -- WEBP: build (ver encoder: 0x020f)
    -- PNG: /usr/lib/x86_64-linux-gnu/libpng.so (ver 1.6.37)
    -- TIFF: /usr/lib/x86_64-linux-gnu/libtiff.so (ver 42 / 4.1.0)
    -- JPEG 2000: build (ver 2.4.0)
    -- OpenEXR: build (ver 2.3.0)
    -- HDR: YES
    -- SUNRASTER: YES
    -- PXM: YES
    -- PFM: YES
    --
    -- Video I/O:
    -- DC1394: NO
    -- FFMPEG: YES
    -- avcodec: YES (58.54.100)
    -- avformat: YES (58.29.100)
    -- avutil: YES (56.31.100)
    -- swscale: YES (5.5.100)
    -- avresample: NO
    -- GStreamer: NO
    -- v4l/v4l2: YES (linux/videodev2.h)
    --
    -- Parallel framework: pthreads
    --
    -- Trace: YES (with Intel ITT)
    --
    -- Other third-party libraries:
    -- Intel IPP: 2020.0.0 Gold [2020.0.0]
    -- at: /home/fish/opencv/opencv-4.5.5/build/3rdparty/ippicv/ippicv_lnx/icv
    -- Intel IPP IW: sources (2020.0.0)
    -- at: /home/fish/opencv/opencv-4.5.5/build/3rdparty/ippicv/ippicv_lnx/iw
    -- VA: NO
    -- Lapack: NO
    -- Eigen: NO
    -- Custom HAL: NO
    -- Protobuf: build (3.19.1)
    --
    -- NVIDIA CUDA: YES (ver 11.0, CUFFT CUBLAS FAST_MATH)
    -- NVIDIA GPU arch: 70
    -- NVIDIA PTX archs:
    --
    -- cuDNN: YES (ver 8.0.5)
    --
    -- OpenCL: YES (no extra features)
    -- Include path: /home/fish/opencv/opencv-4.5.5/3rdparty/include/opencl/1.2
    -- Link libraries: Dynamic load
    --
    -- Python 3:
    -- Interpreter: /usr/bin/python3 (ver 3.8.10)
    -- Libraries: /usr/lib/x86_64-linux-gnu/libpython3.8.so (ver 3.8.10)
    -- numpy: /home/fish/.local/lib/python3.8/site-packages/numpy/core/include (ver 1.22.3)
    -- install path: /usr/lib/python3/dist-packages/cv2/python-3.8
    --
    -- Python (for build): /usr/bin/python2.7
    --
    -- Java:
    -- ant: NO
    -- JNI: NO
    -- Java wrappers: NO
    -- Java tests: NO
    --
    -- Install to: /usr/local
    -- -----------------------------------------------------------------

    编译:

    make

    安装:

    sudo make install

    默认安装位置:

    • /usr/local/bin - executable files
    • /usr/local/lib - libraries (.so)
    • /usr/local/cmake/opencv4 - cmake package
    • /usr/local/include/opencv4 - headers
    • /usr/local/share/opencv4 - other files (e.g. trained cascades in XML format)
  4. 验证

    该命令显示opencv版本号。

    c++:

    pkg-config opencv --modversion

    python:

    python3
    import cv2
    print(cv2.__version__)

[记] OpenCV4 源码编译安装 | 记录的更多相关文章

  1. mysql5.7.10 源码编译安装记录 (centos6.4)【转】

    一.准备工作 1.1 卸载系统自带mysql 查看系统是否自带MySQL, 如果有就卸载了, 卸载方式有两种yum, rpm, 这里通过yum卸载 rpm -qa | grep mysql //查看系 ...

  2. Zabbix 源码编译安装

    简介: Zabbix 分布式监控系统,源码编译安装记录 ( 记不得是第多少次了 ) 下载地址:http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX ...

  3. centos7源码编译安装lamp/lnmp

    centos7源码编译安装lamp/lnmp 进程:是包工头(相当于是个门,只管开门关门,不管门内的事儿) 线程:是各种工种(cpu调度的是线程) 进程 是一件事情, 线程 是 同一个时间范围内 同时 ...

  4. SSH/SSL 源码编译安装简易操作说明

    环境:CentOS 6.7 安全加固需求,由于某盟扫描系统主机有SSL系列漏洞,客户要求必须修复: 解决方案:将SSH/SSL升级到最新版本,删除SSL旧版本(实测不删除旧版本某盟扫描无法通过). 当 ...

  5. 保姆级教程——Ubuntu16.04 Server下深度学习环境搭建:安装CUDA8.0,cuDNN6.0,Bazel0.5.4,源码编译安装TensorFlow1.4.0(GPU版)

    写在前面 本文叙述了在Ubuntu16.04 Server下安装CUDA8.0,cuDNN6.0以及源码编译安装TensorFlow1.4.0(GPU版)的亲身经历,包括遇到的问题及解决办法,也有一些 ...

  6. centos7 源码编译安装TensorFlow CPU 版本

    一.前言 我们都知道,普通使用pip安装的TensorFlow是万金油版本,当你运行的时候,会提示你不是当前电脑中最优的版本,特别是CPU版本,没有使用指令集优化会让TensorFlow用起来更慢. ...

  7. Linux 下源码编译安装 vim 8.1

    前言 目前 linux 的各个发行版基本上都是带了一个 vi 编辑器的,而本文要说的 vim 编辑器对 vi 做了一些优化升级,更好用.当我们需要远程操作一台 linux 服务器的时候,只能使用命令行 ...

  8. [笔记] Ubuntu 18.04源码编译安装OpenCV 4.0流程

    标准常规安装方法安装的OpenCV版本比较低,想尝鲜使用4.0版本,只好源码安装. 安装环境 OS:Ubuntu 18.04 64 bit 显卡:NVidia GTX 1080 CUDA:10.0 c ...

  9. Mysql源码编译安装&主从复制

    一)camke源码编译安装mysql 1)创建软件安装目录software [root@master software]# ls cmake-2.8.8.tar.gz mysql-5.5.32.tar ...

  10. Httpd服务进阶知识-LAMP源码编译安装

    Httpd服务进阶知识-LAMP源码编译安装 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 想必大家都知道,动态资源交给fastcgi程序处理,静态资源依旧由httpd服务器处理  ...

随机推荐

  1. day01-SpringMVC基本介绍-01

    SpringMVC介绍-01 1.离线文档 解压 spring-5.3.8-dist.zip文件. 位置:spring-framework-5.3.8/docs/reference/html/web. ...

  2. Quartz.Net 官方教程 Tutorial 3/3

    Schedule 相关属性设置 扩展属性方式 var host = Host.CreateDefaultBuilder() .ConfigureServices(services => { se ...

  3. ubuntu下yaml-cpp安装与使用

    安装 从GitHub上下载源码编译安装:git clone https://github.com/jbeder/yaml-cpp.git: 进入源码目录并创建一个 build 目录:cd yaml-c ...

  4. Stochastic Methods in Finance (1)

    Bootcamp Topics related to measure theory. 略去,详见测度论专栏中的文章 Expectations 令 \(X\) 为 \((\Omega, \mathcal ...

  5. python学习day 02

    昨日内容回顾 typora软件 1.作为一款逐年火爆的文本编辑器,深受IT行业的喜爱. 2.下载与安装: windows用群里发的软件 macOS下载地址:https://mac.qdrayst.co ...

  6. 2023.1.13 [网络流24题] 餐巾计划问题 LuoguP1251

    2023.1.13 今日完成的[餐巾计划问题],是一道最小费用最大流的模板题,本人太弱在第一次使用dinic + spfa 完成此题时,也出现了许多问题,在此总结和提醒. 大致题意 一个餐厅在相继的 ...

  7. 远程控制 todesk

    最近发现的一个好用的远程连接软件 便是近些年推出来的 todesk 虽然qq的远程 和 向日葵的 远程连接也都可以达到我要实现的效果 但是体验起来的话 我个人还是觉得 todesk更好用一些 下载地址 ...

  8. Node Sass could not find a binding for your current environment: Windows 64-bit with Node.js 1x.x

    出现问题原因: nodejs和node-sass版本不匹配 解决办法: 下载node-sass指定版本的nodejs 1)node-sass的节点版本支持政策 ① 支持的 Node.js版本因版本而异 ...

  9. ubuntu18.04编译webrtc_android库

    webrtc 是谷歌提供的音视频通讯方案, 能够很好的解决音视频互联互通的场景. 本文基于 Ubuntu 18.04 编译 android 版本的过程, 其它平台也可以参考, 基本都大同小异. 编译环 ...

  10. KingbaseES DBLink 介绍

    DBLink 扩展插件功能与 Kingbase_FDW 类似,用于远程访问KingbaseES 数据库.相比于Kingbase_FDW,DBLink 功能更强大,可以执行DML,还可以通过 begin ...