opencv_pc及Hi3559上移植

OPENCV install

OPECV install in PC

opencv3.4.2为例

PC机环境:Ubuntu 16.04

  1. 安装包下载

    请到OpenCV的官方网站:http://opencv.org/releases.html 下载Opencv3.4.2

  2. 依赖库安装

    # 1. 安装cmake
    sudo apt install cmake
    # 2. 安装GTK+ 2.0或更高版本(可选),输入(GTK主要是界面有关的库)
    sudo apt install libgtk2.0-dev
    # 3. 安装libav开发包:libavcodec-dev, libavformat-dev, libswscale-dev
    sudo apt install libavcodec-dev libavformat-dev libswscale-dev
    
  3. 安装前配置

    # 1. 解压opencv-3.4.2.zip,得到opencv-3.4.2文件夹
    unzip opencv-3.4.2.zip
    # 2. 在opencv-3.4.2内,建一个build文件夹,用来存放编译文件
    cd opencv-3.4.2
    mkdir build
    # 3. 进入build目录,进行cmake配置
    cd build
    cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/最终编译后结果的存储路径(建议绝对路径,在opencv-3.4.2新建一个output文件夹来存储,当前教程以opencv-3.4.2为结果路径,没有建立output文件夹) \
    -D WITH_GPHOTO2=OFF \
    -D WITH_GTK=OFF \
    -D WITH_CUDA=OFF \
    -D WITH_FFMPEG=OFF \
    -D WITH_LAPACK=OFF ../
    # WITH_GPHOTO2=OFF和WITH_GTK=OFF WITH_CUDA=OFF -D WITH_FFMPEG=OFF
    # -D WITH_LAPACK=OFF用于关闭编译依赖项,建议关闭编译依赖项,降低编译复杂度。
    
  4. 编译与安装

    build目录下输入

    make -j18     # 编译
    make install  # 安装
    
  5. 环境变量配置

    vim ~/.bashrc
    # 在.bashrc末尾加上如下字段
    #opencv3.4.2
    export PATH=/....../opencv-3.4.2/bin:$PATH
    export LD_LIBRARY_PATH=/....../opencv-3.4.2/lib:$LD_LIBRARY_PATH
    export PKG_CONFIG_PATH=/....../opencv-3.4.2/lib/pkgconfig
    # 退出.bashrc
    source ~/.bashrc
    
  6. 测试

    # 进入Opencv下的sample/cpp/下,编译人脸识别的示例程序
    gcc `pkg-config --cflags opencv` -o facedetect facedetect.cpp `pkg-config --libs opencv` -lstdc++
    # 如果顺利编译,说明Opencv安装成功,并且会在该目录下生成facedetect的可执行程序
    # 输入以下指令,运行该程序
    ./facedetect ../data/lena.jpg
    

OPENCV cross-compling

opencv3.4.2为例

交叉编译工具链:aarch64-himix100-linux

移植平台:Hi3559AV100

  1. 安装包下载

    请到OpenCV的官方网站:http://opencv.org/releases.html 下载Opencv3.4.2

  2. 配置和编译

    进入Opencv3.4.2目录下,添加如下的Makefile文件

    CUR_DIR      := $(shell pwd)
    
    .PHONY:all prepare clean install
    .PHONY:opencv_cmake opencv_make
    
    all: clean prepare opencv_cmake opencv_make install
    
    prepare:
    	@mkdir -p $(CUR_DIR)/build
    	@mkdir -p $(CUR_DIR)/output
    
    opencv_cmake:
    	@pushd build; \
    	 cmake  -D CMAKE_BUILD_TYPE=RELEASE  \                    # build 类型(Debug,Release,…)
    			-D CMAKE_INSTALL_PREFIX=../output  \
    			-D CMAKE_C_COMPILER=aarch64-himix100-linux-gcc \      # 指定C编译器
    			-D CMAKE_CXX_COMPILER=aarch64-himix100-linux-g++ \    # 指定C++编译器
    			-D CMAKE_EXE_LINKER_FLAGS=-lrt -lpthread \            # 解决问题1
    			-D WITH_MATLAB=OFF \
    			-D WITH_GTK=OFF \                                     
    			# GTK是类似界面的东西,运行X-WINDOWS的GNOME界面的,但ARM里运行GTK需要X-WINDOWS支持
    			# 两者都是很耗资源的,对ARM板的动态存储能力要求很高,一般关闭
    			# 由于Hi3559是终端操作,不是图形化界面,因此建议关闭,不然后续也会报错
    			-D BUILD_SHARED_LIBS=ON \                             # ON 静态库,OFF 动态库
    			-D OPENCV_EXTRA_C_FLAGS=-fPIC  \
    			-D BUILD_opencv_apps=OFF \
    			-D BUILD_ZLIB=ON \                                    # 编译ZLib库文件使能
    			-D BUILD_PNG=ON \                                     # 编译PNG库文件使能
    			-D BUILD_opencv_js=OFF \
    			-D BUILD_TESTS=OFF \
    			-D BUILD_ANDROID_EXAMPLES=OFF \
    			-D BUILD_PACKAGE=OFF \
    			-D BUILD_TESTS=OFF \
    			-D BUILD_PERF_TESTS=OFF \
    			-D ENABLE_PIC=TRUE \
    			-D OpenCV_ARCH=AARCH64 \
    			-D ZLIB_INCLUDE_DIR=$(CUR_DIR)/3rdparty/zlib \        
    			-D ZLIB_INCLUDE_DIRS=$(CUR_DIR)/3rdparty/zlib \
    			# 设置查找zlib的路径
    			# OpenCV3.4.2已经包含了第三方的库
    			..  \
    		  ;popd
    
    opencv_make:
    	@pushd build;make -j16;popd
    
    install:
    	 @pushd build;make install;popd
    
    clean:
    	@rm -rf $(CUR_DIR)/build
    	@rm -rf $(CUR_DIR)/output
    

    参照参考2,将opencv-3.4.1/3rdparty/libpng/arm/下的代码全选,放到opencv-3.4.1/3rdparty/libpng目录中,进行编译;注意提前修改问题6中的说明

    执行步骤:

    make
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值