美文网首页
Linux源码编译安装OpenCV4(Ubuntu19)

Linux源码编译安装OpenCV4(Ubuntu19)

作者: Saxon_323e | 来源:发表于2019-12-01 14:32 被阅读0次

linux安装官网参考
从源码编译jar官网参考

1.1 安装lib依赖

必须要安装的依赖,通过命令安装:

[compiler] sudo apt-get install build-essential
[required] sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

如果需要其他的功能,可选安装:

[optional] sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

1.2 安装ant依赖

注:此前因没安装ant,导致构建静态jni库时总是不生成,make也不报错,必须安装!
Apache ant官方下载最新版 https://ant.apache.org/bindownload.cgi

2.1 安装OpenCV(这里使用4.1.1)

下载Opencv安装包,OpenCV官网下载 只有Windows和Android等
若想构建Centos版只能从源码构建 Github源码下载

解压:

unzip opencv-4.1.1.zip

2.2 在解压的主目录里新建build空目录用来存放编译文件(因OpenCV4.x要求不允许生成在有源码的目录):

cd opencv-4.1.1
mkdir build
cd build

【注: cmake/make编译的路径不要包含中文,否则可能导致一些奇葩问题,亲身踩坑!】
报错:

...
[ 43%] Linking CXX static library ../lib/liblibprotobuf.a
[ 43%] Building CXX object modules/core/CMakeFiles/opencv_core.dir/src/matrix_c.cpp.o
[ 43%] Building  target libprotobuf xxx   CMakefile (:163  all) 

2.3.1 然后在新建的这个文件里运行cmake(为了减少升级cmake2到cmake3源码安装的折腾,直接可在线安装 yum install -y cmake3):

cmake3 -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DBUILD_TESTS=OFF -DBUILD_opencv_java=ON -DCMAKE_INSTALL_PREFIX=/usr/local ..

2.3.2 更多可选参数,如:

-DCMAKE_BUILD_TYPE=RELEASE
-DWITH_OPENCL=OFF
-DWITH_CUDA=OFF
-DWITH_OPENCL=ON
-DWITH_OPENGL=OFF
-DWITH_OPENMP=OFF
-DWITH_OPENNNI=OFF
-DWITH_OPENNNI2=OFF
-DWITH_OPENVX=OFF
-DWITH_VULKAN=OFF
-DBUILD_CUDA_STUBS=OFF
-DBUILD_DOCS=OFF
-DBUILD_EXAMPLES=OFF
-DBUILD_IPP_IW=ON
-DBUILD_ITT=ON
-DBUILD_JASPER=ON
-DBUILD_JAVA=OFF
-DBUILD_JPEG=ON
-DBUILD_OPENEXR=ON
-DBUILD_PACKAGE=ON
-DBUILD_PERF_TESTS=OFF
-DBUILD_PNG=ON
-DBUILD_PROTOBUF=ON
-DBUILD_SHARED_LIBS=ON
-DBUILD_TBB=OFF
-DBUILD_TESTS=ON
-DBUILD_TIFF=ON
-DBUILD_USE_SYMLINKS=OFF
-DBUILD_WEBP=ON
-DBUILD_WITH_DEBUG_INFO=OFF
-DBUILD_WITH_DYNAMIC_IPP=OFF
-DBUILD_ZLIB=ON
-DBUILD_opencv_apps=OFF
-DBUILD_opencv_calib3d=OFF
-DBUILD_opencv_core=ON
-DBUILD_opencv_dnn=ON
-DBUILD_opencv_features2d=OFF
-DBUILD_opencv_flann=OFF
-DBUILD_opencv_gapi=ON
-DBUILD_opencv_highgui=OFF
-DBUILD_opencv_imgcodecs=ON
-DBUILD_opencv_imgproc=ON
-DBUILD_opencv_java_bindings_generator=OFF
-DBUILD_opencv_js=OFF
-DBUILD_opencv_ml=OFF
-DBUILD_opencv_objdetect=OFF
-DBUILD_opencv_photo=OFF
-DBUILD_opencv_python2=OFF
-DBUILD_opencv_python3=OFF
-DBUILD_opencv_python_bindings_generator=OFF
-DBUILD_opencv_stitching=OFF
-DBUILD_opencv_ts=OFF
-DBUILD_opencv_video=OFF
-DBUILD_opencv_videoio=OFF
-DBUILD_opencv_world=OFF
-DCMAKE_INSTALL_PREFIX=./install

如上参数表示,只关注core、dnn、imgcodecs、imgproc、gapi模块。
若需要编译扩展模块,则还需要加入:

-DOPENCV_EXTRA_MODULES_PATH=/path/opencv_contrib/modules

如果是嵌入式设备,还需要加入相应的编译工具链和其他一些配置,如下所示:

-DCMAKE_C_COMPILER=/path/hisi-linux/x86-arm/aarch64-himix100-linux/bin/aarch64-himix100-linux-gcc -DCMAKE_CXX_COMPILER=/path/hisi-linux/x86-arm/aarch64-himix100-linux/bin/aarch64-himix100-linux-g++ -DCMAKE_CXX_FLAGS=-fPIC -DCMAKE_C_FLAGS=-fPIC -DCMAKE_EXE_LINKER_FLAGS=-lpthread -lrt -ldl

2.4 OpenCV4默认不生成.pc文件,OPENCV_GENERATE_PKGCONFIG=ON才会生成。
之后就是编译和安装了,我的电脑是四核八线程,可以运行make,若不想编译时时间太长影响工作,四核的PC可用 make -j7。

make -j7
sudo make install

FQA:

问题1:使用clion或者CMake命令时报错,错误消息:CMake Error at CMakeLists.txt:11 (message):FATAL: In-source builds are not allowed.You should create a separate directory for build files.

解决方案:
进到opencv主目录

rm CMakeCache.txt
mkdir build
cd build
cmake ..
make

问题2:编译成功后,如将 libopencv_xxx.jar和libopencv_xxx.so拷贝只Java工程运行,报错消息:

libopencv_core.so.xxx : cannot open shared object file libopencv_dnn.so.xxx: no such file or directory
解决方案:
检查编译参数是否使用静态编译,因为动态编译生成的so文件会使用编译的时候的系统绝对路径,要想在java工程动态引用,必须使用静态编译,显示指定参数:-DBUILD_SHARED_LIBS=OFF(默认是ON)

已在应用于本人一个开源项目:
参考1:https://github.com/wl4g/super-devops-tool-opencv-native
参考2:https://github.com/wl4g/super-devops/tree/master/super-devops-tool/super-devops-tool-opencv

相关文章

  • Linux源码编译安装OpenCV4(Ubuntu19)

    linux安装官网参考从源码编译jar官网参考 1.1 安装lib依赖 必须要安装的依赖,通过命令安装: 如果需要...

  • PHP 开发环境,源代码安装 LNMP

    源码编译安装 LNMP 环境 LNMP(Linux, Nginx, Mysql, PHP) 源码编译安装,需要用到...

  • ubuntu16.04 编译opencv4和opencv_con

    @[TOC](ubuntu16.04 编译opencv4和opencv_contrib) 下载源码 opencv ...

  • 测试环境部署

    安装Nginx环境(linux) linux环境 下载依赖包 安装nginx需要先将官网下载的源码进行编译,编译依...

  • python深入系列(一):python源码运行流程

    源码编译 要看懂源码,肯定要学会编译源码。先去官网下载源码文件,然后解压编译安装。linux环境下进解压目录依次运...

  • Mesos 安装

    安装 系统要求: 64位的linux或mac系统 安装: 1.源码编译安装(centos 7.0) 编译环境准备 ...

  • linux安装nginx

    linux安装nginx gcc安装 安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如...

  • 让nginx跑起来

    在linux ubuntu环境下的两种安装方案: yum / apt 安装、源码编译安装 准备环境: linux服...

  • ubuntu安装node

    linux安装软件一般又三种方式 使用源码编译安装 (编译安装时间较长) 下载编译好的二进制源码包解压缩安装 ap...

  • 安装MySQL

    Mysql-5.7.9 基于gcc编译安装for linux 一、下载源码包 二、安装准备 1、先安装gcc编译器...

网友评论

      本文标题:Linux源码编译安装OpenCV4(Ubuntu19)

      本文链接:https://www.haomeiwen.com/subject/gamzwctx.html