一、环境介绍
ubuntu版本: VM虚拟机运行ubuntu18.04 64位
OpenCV
版本: 3.4.9
目标开发板: RK3399
二、相关源码包下载地址
OpenCV源码下载地址:
https://opencv.org/releases/
选择3.4.9版本下载。
aarch64-
linux
-交叉编译器下载地址:
https://download.csdn.net/download/xiaolong1126626497/12203205
三、编译OpenCV源码
3.1 安装cmake
wbyq@wbyq:~/work$ cmake-gui
Command 'cmake-gui' not found, but can be installed with:
sudo snap install cmake # version 3.16.5, or
sudo apt install cmake-qt-gui
See 'snap info cmake' for additional versions.
wbyq@wbyq:~/work$
没有cmake就执行下的命令安装。
wbyq@wbyq:~/work/opencv-3.4.9/_install$ sudo apt-get install cmake
wbyq@wbyq:~/work/opencv-3.4.9/_install$ sudo apt install cmake-qt-gui
wbyq@wbyq:~/work/opencv-3.4.9/_install$ sudo apt-get install libgtk2.0-dev
wbyq@wbyq:~/work/opencv-3.4.9/_install$ sudo apt-get install pkg-config
3.2 解压OpenCV源码
wbyq@wbyq:~/work$ unzip /mnt/hgfs/linux-share-dir/opencv-3.4.9.zip
wbyq@wbyq:~/work$ ls
arm-linux-gcc opencv-3.4.9 rk3399
wbyq@wbyq:~/work$ cd opencv-3.4.9/
wbyq@wbyq:~/work/opencv-3.4.9$ ls
3rdparty apps cmake CMakeLists.txt CONTRIBUTING.md data doc include LICENSE modules platforms README.md samples
3.3 配置cmake编译opencv
在源码目录下创建一个_install文件夹用于存放编译之后的文件
wbyq@wbyq:~/work/opencv-3.4.9$ mkdir _install
wbyq@wbyq:~/work/opencv-3.4.9$ cmake-gui
选择
OpenCV
源码文件夹和存放编译文件的文件夹。
下一步之后选择编译器配置。
完成点击Finish,接下来cmake就会加载配置。
完成步骤之后,关闭图像配置界面,进入到
源码安装目录
下,看是否生成了Makefile文件。
接下来就进行编译安装了。
byq:~/work/opencv-3.4.9/_install$ make && make install
编译完成:
wbyq@wbyq:~/work/opencv-3.4.9/_install$
wbyq@wbyq:~/work/opencv-3.4.9/_install$ cd install/
wbyq@wbyq:~/work/opencv-3.4.9/_install/install$ ls
bin include lib share
wbyq@wbyq:~/work/opencv-3.4.9/_install/install$ tree
├── bin
│ ├── opencv_annotation
│ ├── opencv_createsamples
│ ├── opencv_interactive-calibration
│ ├── opencv_traincascade
│ ├── opencv_version
│ ├── opencv_visualisation
│ └── setup_vars_opencv3.sh
├── include
│ ├── opencv
│ │ ├── cvaux.h
│ │ ├── cvaux.hpp
│ │ ├── cv.h
│ │ ├── cv.hpp
│ │ ├── cvwimage.h
│ │ ├── cxcore.h
│ │ ├── cxcore.hpp
│ │ ├── cxeigen.hpp
│ │ ├── cxmisc.h
│ │ ├── highgui.h
│ │ └── ml.h
│ └── opencv2
│ ├── calib3d
│ │ ├── calib3d_c.h
│ │ └── calib3d.hpp
│ ├── calib3d.hpp
│ ├── core
│ │ ├── affine.hpp
│ │ ├── async.hpp
│ │ ├── base.hpp
│ │ ├── bindings_utils.hpp
│ │ ├── bufferpool.hpp
│ │ ├── check.hpp
│ │ ├── core_c.h
│ │ ├── core.hpp
│ │ ├── cuda
│ │ │ ├── block.hpp
│ │ │ ├── border_interpolate.hpp
│ │ │ ├── color.hpp
│ │ │ ├── common.hpp
│ │ │ ├── datamov_utils.hpp
│ │ │ ├── detail
│ │ │ │ ├── color_detail.hpp
│ │ │ │ ├── reduce.hpp
│ │ │ │ ├── reduce_key_val.hpp
│ │ │ │ ├── transform_detail.hpp
│ │ │ │ ├── type_traits_detail.hpp
│ │ │ │ └── vec_distance_detail.hpp
│ │ │ ├── dynamic_smem.hpp
│ │ │ ├── emulation.hpp
│ │ │ ├── filters.hpp
│ │ │ ├── funcattrib.hpp
│ │ │ ├── functional.hpp
│ │ │ ├── limits.hpp
│ │ │ ├── reduce.hpp
│ │ │ ├── saturate_cast.hpp
│ │ │ ├── scan.hpp
│ │ │ ├── simd_functions.hpp
│ │ │ ├── transform.hpp
│ │ │ ├── type_traits.hpp
│ │ │ ├── utility.hpp
│ │ │ ├── vec_distance.hpp
│ │ │ ├── vec_math.hpp
│ │ │ ├── vec_traits.hpp
│ │ │ ├── warp.hpp
│ │ │ ├── warp_reduce.hpp
│ │ │ └── warp_shuffle.hpp
│ │ ├── cuda.hpp
│ │ ├── cuda.inl.hpp
│ │ ├── cuda_stream_accessor.hpp
│ │ ├── cuda_types.hpp
│ │ ├── cv_cpu_dispatch.h
│ │ ├── cv_cpu_helper.h
│ │ ├── cvdef.h
│ │ ├── cvstd.hpp
│ │ ├── cvstd.inl.hpp
│ │ ├── detail
│ │ │ ├── async_promise.hpp
│ │ │ └── exception_ptr.hpp
│ │ ├── directx.hpp
│ │ ├── eigen.hpp
│ │ ├── fast_math.hpp
│ │ ├── hal
│ │ │ ├── hal.hpp
│ │ │ ├── interface.h
│ │ │ ├── intrin_avx512.hpp
│ │ │ ├── intrin_avx.hpp
│ │ │ ├── intrin_cpp.hpp
│ │ │ ├── intrin_forward.hpp
│ │ │ ├── intrin.hpp
│ │ │ ├── intrin_msa.hpp
│ │ │ ├── intrin_neon.hpp
│ │ │ ├── intrin_sse_em.hpp
│ │ │ ├── intrin_sse.hpp
│ │ │ ├── intrin_vsx.hpp
│ │ │ ├── intrin_wasm.hpp
│ │ │ ├── msa_macros.h
│ │ │ └── simd_utils.impl.hpp
│ │ ├── ippasync.hpp
│ │ ├── mat.hpp
│ │ ├── mat.inl.hpp
│ │ ├── matx.hpp
│ │ ├── neon_utils.hpp
│ │ ├── ocl_genbase.hpp
│ │ ├── ocl.hpp
│ │ ├── opencl
│ │ │ ├── ocl_defs.hpp
│ │ │ ├── opencl_info.hpp
│ │ │ ├── opencl_svm.hpp
│ │ │ └── runtime
│ │ │ ├── autogenerated
│ │ │ │ ├── opencl_clamdblas.hpp
│ │ │ │ ├── opencl_clamdfft.hpp
│ │ │ │ ├── opencl_core.hpp
│ │ │ │ ├── opencl_core_wrappers.hpp
│ │ │ │ ├── opencl_gl.hpp
│ │ │ │ └── opencl_gl_wrappers.hpp
│ │ │ ├── opencl_clamdblas.hpp
│ │ │ ├── opencl_clamdfft.hpp
│ │ │ ├── opencl_core.hpp
│ │ │ ├── opencl_core_wrappers.hpp
│ │ │ ├── opencl_gl.hpp
│ │ │ ├── opencl_gl_wrappers.hpp
│ │ │ ├── opencl_svm_20.hpp
│ │ │ ├── opencl_svm_definitions.hpp
│ │ │ └── opencl_svm_hsa_extension.hpp
│ │ ├── opengl.hpp
│ │ ├── operations.hpp
│ │ ├── optim.hpp
│ │ ├── ovx.hpp
│ │ ├── persistence.hpp
│ │ ├── ptr.inl.hpp
│ │ ├── saturate.hpp
│ │ ├── simd_intrinsics.hpp
│ │ ├── softfloat.hpp
│ │ ├── sse_utils.hpp
│ │ ├── traits.hpp
│ │ ├── types_c.h
│ │ ├── types.hpp
│ │ ├── utility.hpp
│ │ ├── utils
│ │ │ ├── allocator_stats.hpp
│ │ │ ├── allocator_stats.impl.hpp
│ │ │ ├── filesystem.hpp
│ │ │ ├── instrumentation.hpp
│ │ │ ├── logger.defines.hpp
│ │ │ ├── logger.hpp
│ │ │ ├── tls.hpp
│ │ │ └── trace.hpp
│ │ ├── va_intel.hpp
│ │ ├── version.hpp
│ │ ├── vsx_utils.hpp
│ │ └── wimage.hpp
│ ├── core.hpp
│ ├── cvconfig.h
│ ├── dnn
│ │ ├── all_layers.hpp
│ │ ├── dict.hpp
│ │ ├── dnn.hpp
│ │ ├── dnn.inl.hpp
│ │ ├── layer.details.hpp
│ │ ├── layer.hpp
│ │ ├── shape_utils.hpp
│ │ └── utils
│ │ └── inference_engine.hpp
│ ├── dnn.hpp
│ ├── features2d
│ │ ├── features2d.hpp
│ │ └── hal
│ │ └── interface.h
│ ├── features2d.hpp
│ ├── flann
│ │ ├── all_indices.h
│ │ ├── allocator.h
│ │ ├── any.h
│ │ ├── autotuned_index.h
│ │ ├── composite_index.h
│ │ ├── config.h
│ │ ├── defines.h
│ │ ├── dist.h
│ │ ├── dummy.h
│ │ ├── dynamic_bitset.h
│ │ ├── flann_base.hpp
│ │ ├── flann.hpp
│ │ ├── general.h
│ │ ├── ground_truth.h
│ │ ├── hdf5.h
│ │ ├── heap.h
│ │ ├── hierarchical_clustering_index.h
│ │ ├── index_testing.h
│ │ ├── kdtree_index.h
│ │ ├── kdtree_single_index.h
│ │ ├── kmeans_index.h
│ │ ├── linear_index.h
│ │ ├── logger.h
│ │ ├── lsh_index.h
│ │ ├── lsh_table.h
│ │ ├── matrix.h
│ │ ├── miniflann.hpp
│ │ ├── nn_index.h
│ │ ├── object_factory.h
│ │ ├── params.h
│ │ ├── random.h
│ │ ├── result_set.h
│ │ ├── sampling.h
│ │ ├── saving.h
│ │ ├── simplex_downhill.h
│ │ └── timer.h
│ ├── flann.hpp
│ ├── highgui
│ │ ├── highgui_c.h
│ │ └── highgui.hpp
│ ├── highgui.hpp
│ ├── imgcodecs
│ │ ├── imgcodecs_c.h
│ │ ├── imgcodecs.hpp
│ │ └── ios.h
│ ├── imgcodecs.hpp
│ ├── imgproc
│ │ ├── detail
│ │ │ └── distortion_model.hpp
│ │ ├── hal
│ │ │ ├── hal.hpp
│ │ │ └── interface.h
│ │ ├── imgproc_c.h
│ │ ├── imgproc.hpp
│ │ └── types_c.h
│ ├── imgproc.hpp
│ ├── ml
│ │ ├── ml.hpp
│ │ └── ml.inl.hpp
│ ├── ml.hpp
│ ├── objdetect
│ │ ├── detection_based_tracker.hpp
│ │ ├── objdetect_c.h
│ │ └── objdetect.hpp