391|0

103

帖子

2

资源

一粒金砂(中级)

【米尔MYC-JX8MPQ评测】+OpenCV库进行编译 [复制链接]

上篇介绍完,我们就看到里面已经搭建好OpenCV库了。里面搭载的是OpenCV4.4.0的版本。但是要使用起来还是需要我们在虚拟机这边也有同样的库。所以我选择再编译一次,同时也是熟悉下Ubuntu系统中的操作。

image-20220409204529-1.png  

我们需要到OpenCV官网下载https://opencv.org/releases/page/2/ releases的代码,找到里面的源码就行了。

image-20220409204529-2.png  

image-20220409204529-3.png  放到Ubuntu下进行解压就能得到我们的源码目录,然后可以再新建一个编译目录,我的名字就是build。

之后就是安装CMAKE工具

指令如下:

sudo apt-get install cmake cmake-qt-gui cmake-curses-gui

安装好之后使用cmake-gui启动我们图形的配置界面。

image-20220409204529-4.png  

需要选择好我们的源码路径,构建路径。开始没有下面红色内容。

image-20220409204529-5.png  

之后按照上面步骤进行操作。

image-20220409204529-6.png  

之后就是构建的编译工具链的选择了。这里好像是不可以选择yocto编译出来的工具链,使用其他的工具链。这里具体我也不知道应该选择什么,不过看网上的介绍。同样是IMX8的开发使用了这个连接下的工具。https://releases.linaro.org/components/toolchain/binaries/

image-20220409204529-7.png  

这里面也是有很多的选择的,我选择了最新的版本的。

image-20220409204529-8.png  

因为我们是64位的机器,所以交叉编译工具链也是64位的。下载完成后就是解压到我们虚拟机中。并且在环境中配置好。

image-20220409204529-9.png  我在/etc/profile下已经修改好了。

image-20220409204529-10.png  

当我们选择完后就会有一个初步的构建。如上。然后就会报红,这些都是没关系的,我们接着修改。

image-20220409204529-11.png  

在 CMAKE_EXE_LINKER_FLAGS 处添加上-lpthread -lrt -ldl。添加这些是是指定依赖库的链接参数。

image-20220409204529-12.png  

image-20220409204529-13.png  

然后再search中搜索zlib和png出现的都勾选上,不然后面make会报错。

image-20220409204529-14.png  

之后把我们的安装路径选择下,基本到这里就配置完成了。再此点击Configure。

image-20220409204529-15.png  

输出窗口没错误的时候我们就能到build文件下了,准备开始构建了。

image-20220409204529-16.png  

里面已经很多文件了。不过这里暂时还不能编译需要先修改几个文件,有些事4.4.0这个版本特有的报错。

首先在源码目录 opencv-4.4.0/3rdparty/protobuf/src/google/protobuf/stubs/common.cc 这个文件下添加#define HAVE_PTHREAD 宏定义才可以编译的过。

image-20220409204529-17.png  

编译可能会报错“libopencv_imgcodecs.so.4.1.0: undefined reference to png_init_filter_functions_neon“

 

修改opencv4.4.0/3rdparty/libpng/CMakeLists.txt,在最前面添加

SET(ARM 1)

SET(ENABLE_NEON 1)

image-20220409204529-18.png  

接下来就可以make了。

image-20220409204529-19.png  

编译完成后需要执行make install 这样就完成整个编译了。


├── bin

│   ├── opencv_annotation

│   ├── opencv_interactive-calibration

│   ├── opencv_version

│   ├── opencv_visualisation

│   └── setup_vars_opencv4.sh

├── include

│   └── opencv4

│       └── 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

│           │   ├── cvstd_wrapper.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

│           │   ├── 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

│           │   ├── 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

│           │   │   ├── logtag.hpp

│           │   │   ├── tls.hpp

│           │   │   └── trace.hpp

│           │   ├── va_intel.hpp

│           │   ├── version.hpp

│           │   └── vsx_utils.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

│           │   └── version.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

│           ├── gapi

│           │   ├── core.hpp

│           │   ├── cpu

│           │   │   ├── core.hpp

│           │   │   ├── gcpukernel.hpp

│           │   │   ├── imgproc.hpp

│           │   │   └── video.hpp

│           │   ├── fluid

│           │   │   ├── core.hpp

│           │   │   ├── gfluidbuffer.hpp

│           │   │   ├── gfluidkernel.hpp

│           │   │   └── imgproc.hpp

│           │   ├── garg.hpp

│           │   ├── garray.hpp

│           │   ├── gasync_context.hpp

│           │   ├── gcall.hpp

│           │   ├── gcommon.hpp

│           │   ├── gcompiled_async.hpp

│           │   ├── gcompiled.hpp

│           │   ├── gcompoundkernel.hpp

│           │   ├── gcomputation_async.hpp

│           │   ├── gcomputation.hpp

│           │   ├── gkernel.hpp

│           │   ├── gmat.hpp

│           │   ├── gmetaarg.hpp

│           │   ├── gopaque.hpp

│           │   ├── gproto.hpp

│           │   ├── gpu

│           │   │   ├── core.hpp

│           │   │   ├── ggpukernel.hpp

│           │   │   └── imgproc.hpp

│           │   ├── gscalar.hpp

│           │   ├── gstreaming.hpp

│           │   ├── gtransform.hpp

│           │   ├── gtyped.hpp

│           │   ├── gtype_traits.hpp

│           │   ├── imgproc.hpp

│           │   ├── infer

│           │   │   └── ie.hpp

│           │   ├── infer.hpp

│           │   ├── ocl

│           │   │   ├── core.hpp

│           │   │   ├── goclkernel.hpp

│           │   │   └── imgproc.hpp

│           │   ├── opencv_includes.hpp

│           │   ├── operators.hpp

│           │   ├── own

│           │   │   ├── assert.hpp

│           │   │   ├── convert.hpp

│           │   │   ├── cvdefs.hpp

│           │   │   ├── exports.hpp

│           │   │   ├── mat.hpp

│           │   │   ├── saturate.hpp

│           │   │   ├── scalar.hpp

│           │   │   └── types.hpp

│           │   ├── plaidml

│           │   │   ├── core.hpp

│           │   │   ├── gplaidmlkernel.hpp

│           │   │   └── plaidml.hpp

│           │   ├── render

│           │   │   └── render.hpp

│           │   ├── render.hpp

│           │   ├── s11n.hpp

│           │   ├── streaming

│           │   │   ├── cap.hpp

│           │   │   └── source.hpp

│           │   ├── util

│           │   │   ├── any.hpp

│           │   │   ├── compiler_hints.hpp

│           │   │   ├── optional.hpp

│           │   │   ├── throw.hpp

│           │   │   ├── type_traits.hpp

│           │   │   ├── util.hpp

│           │   │   └── variant.hpp

│           │   └── video.hpp

│           ├── gapi.hpp

│           ├── highgui

│           │   ├── highgui_c.h

│           │   └── highgui.hpp

│           ├── highgui.hpp

│           ├── imgcodecs

│           │   ├── imgcodecs_c.h

│           │   ├── imgcodecs.hpp

│           │   ├── ios.h

│           │   └── legacy

│           │       └── constants_c.h

│           ├── imgcodecs.hpp

│           ├── imgproc

│           │   ├── detail

│           │   │   └── gcgraph.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.hpp

│           ├── objdetect.hpp

│           ├── opencv.hpp

│           ├── opencv_modules.hpp

│           ├── photo

│           │   ├── cuda.hpp

│           │   ├── legacy

│           │   │   └── constants_c.h

│           │   └── photo.hpp

│           ├── photo.hpp

│           ├── stitching

│           │   ├── detail

│           │   │   ├── autocalib.hpp

│           │   │   ├── blenders.hpp

│           │   │   ├── camera.hpp

│           │   │   ├── exposure_compensate.hpp

│           │   │   ├── matchers.hpp

│           │   │   ├── motion_estimators.hpp

│           │   │   ├── seam_finders.hpp

│           │   │   ├── timelapsers.hpp

│           │   │   ├── util.hpp

│           │   │   ├── util_inl.hpp

│           │   │   ├── warpers.hpp

│           │   │   └── warpers_inl.hpp

│           │   └── warpers.hpp

│           ├── stitching.hpp

│           ├── video

│           │   ├── background_segm.hpp

│           │   ├── legacy

│           │   │   └── constants_c.h

│           │   ├── tracking.hpp

│           │   └── video.hpp

│           ├── video.hpp

│           ├── videoio

│           │   ├── cap_ios.h

│           │   ├── legacy

│           │   │   └── constants_c.h

│           │   ├── registry.hpp

│           │   ├── videoio_c.h

│           │   └── videoio.hpp

│           └── videoio.hpp

├── lib

│   ├── cmake

│   │   └── opencv4

│   │       ├── OpenCVConfig.cmake

│   │       ├── OpenCVConfig-version.cmake

│   │       ├── OpenCVModules.cmake

│   │       └── OpenCVModules-release.cmake

│   ├── libopencv_calib3d.so -> libopencv_calib3d.so.4.4

│   ├── libopencv_calib3d.so.4.4 -> libopencv_calib3d.so.4.4.0

│   ├── libopencv_calib3d.so.4.4.0

│   ├── libopencv_core.so -> libopencv_core.so.4.4

│   ├── libopencv_core.so.4.4 -> libopencv_core.so.4.4.0

│   ├── libopencv_core.so.4.4.0

│   ├── libopencv_dnn.so -> libopencv_dnn.so.4.4

│   ├── libopencv_dnn.so.4.4 -> libopencv_dnn.so.4.4.0

│   ├── libopencv_dnn.so.4.4.0

│   ├── libopencv_features2d.so -> libopencv_features2d.so.4.4

│   ├── libopencv_features2d.so.4.4 -> libopencv_features2d.so.4.4.0

│   ├── libopencv_features2d.so.4.4.0

│   ├── libopencv_flann.so -> libopencv_flann.so.4.4

│   ├── libopencv_flann.so.4.4 -> libopencv_flann.so.4.4.0

│   ├── libopencv_flann.so.4.4.0

│   ├── libopencv_gapi.so -> libopencv_gapi.so.4.4

│   ├── libopencv_gapi.so.4.4 -> libopencv_gapi.so.4.4.0

│   ├── libopencv_gapi.so.4.4.0

│   ├── libopencv_highgui.so -> libopencv_highgui.so.4.4

│   ├── libopencv_highgui.so.4.4 -> libopencv_highgui.so.4.4.0

│   ├── libopencv_highgui.so.4.4.0

│   ├── libopencv_imgcodecs.so -> libopencv_imgcodecs.so.4.4

│   ├── libopencv_imgcodecs.so.4.4 -> libopencv_imgcodecs.so.4.4.0

│   ├── libopencv_imgcodecs.so.4.4.0

│   ├── libopencv_imgproc.so -> libopencv_imgproc.so.4.4

│   ├── libopencv_imgproc.so.4.4 -> libopencv_imgproc.so.4.4.0

│   ├── libopencv_imgproc.so.4.4.0

│   ├── libopencv_ml.so -> libopencv_ml.so.4.4

│   ├── libopencv_ml.so.4.4 -> libopencv_ml.so.4.4.0

│   ├── libopencv_ml.so.4.4.0

│   ├── libopencv_objdetect.so -> libopencv_objdetect.so.4.4

│   ├── libopencv_objdetect.so.4.4 -> libopencv_objdetect.so.4.4.0

│   ├── libopencv_objdetect.so.4.4.0

│   ├── libopencv_photo.so -> libopencv_photo.so.4.4

│   ├── libopencv_photo.so.4.4 -> libopencv_photo.so.4.4.0

│   ├── libopencv_photo.so.4.4.0

│   ├── libopencv_stitching.so -> libopencv_stitching.so.4.4

│   ├── libopencv_stitching.so.4.4 -> libopencv_stitching.so.4.4.0

│   ├── libopencv_stitching.so.4.4.0

│   ├── libopencv_videoio.so -> libopencv_videoio.so.4.4

│   ├── libopencv_videoio.so.4.4 -> libopencv_videoio.so.4.4.0

│   ├── libopencv_videoio.so.4.4.0

│   ├── libopencv_video.so -> libopencv_video.so.4.4

│   ├── libopencv_video.so.4.4 -> libopencv_video.so.4.4.0

│   └── libopencv_video.so.4.4.0

└── share

    ├── licenses

    │   └── opencv4

    │       ├── ade-LICENSE

    │       ├── jasper-copyright

    │       ├── jasper-LICENSE

    │       ├── jasper-README

    │       ├── libjpeg-turbo-LICENSE.md

    │       ├── libjpeg-turbo-README.ijg

    │       ├── libjpeg-turbo-README.md

    │       ├── libpng-LICENSE

    │       ├── libpng-README

    │       ├── libtiff-COPYRIGHT

    │       ├── opencl-headers-LICENSE.txt

    │       ├── protobuf-LICENSE

    │       ├── protobuf-README.md

    │       ├── quirc-LICENSE

    │       ├── SoftFloat-COPYING.txt

    │       └── zlib-README

    └── opencv4

        ├── haarcascades

        │   ├── haarcascade_eye_tree_eyeglasses.xml

        │   ├── haarcascade_eye.xml

        │   ├── haarcascade_frontalcatface_extended.xml

        │   ├── haarcascade_frontalcatface.xml

        │   ├── haarcascade_frontalface_alt2.xml

        │   ├── haarcascade_frontalface_alt_tree.xml

        │   ├── haarcascade_frontalface_alt.xml

        │   ├── haarcascade_frontalface_default.xml

        │   ├── haarcascade_fullbody.xml

        │   ├── haarcascade_lefteye_2splits.xml

        │   ├── haarcascade_licence_plate_rus_16stages.xml

        │   ├── haarcascade_lowerbody.xml

        │   ├── haarcascade_profileface.xml

        │   ├── haarcascade_righteye_2splits.xml

        │   ├── haarcascade_russian_plate_number.xml

        │   ├── haarcascade_smile.xml

        │   └── haarcascade_upperbody.xml

        ├── lbpcascades

        │   ├── lbpcascade_frontalcatface.xml

        │   ├── lbpcascade_frontalface_improved.xml

        │   ├── lbpcascade_frontalface.xml

        │   ├── lbpcascade_profileface.xml

        │   └── lbpcascade_silverware.xml

        ├── valgrind_3rdparty.supp

        └── valgrind.supp

上面就是整个arm-opencv中的东西了。后续的QT编译还得依赖他。本次分享就先这样了。

 


回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

最新文章 更多>>
    关闭
    站长推荐上一条 1/7 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表