【海思开源篇】-(1)opencv3.3移植

xclshwd 2020-08-29 16:50:56 3546
【海思之开源】-opencv3.3移植
1.前言

现在海思芯片在安防领域的应用越来越智能化,比如现在行车记录仪都添加了ADAS、BSD、DSM和360全景。而目前开源算法处理图像问题都用到opencv,非常广泛。在hi3531dv200做算法时候需要移植opencv,现在把移植的方法总结一下。

2.源码下载

opencv源码编译需要开源软件libpng,zlib支持。所以在这里把zlib和libpng移植也一并总结一下。
海思编译器:aarch64-himix200-linux

2.1 opencv源码

本文使用opencv3.3,开源在github上自行下载。
https://github.com/opencv/opencv/releases
第一步:新建一个脚本文件build_opencv_hi3531dv200.sh,注意脚本最后必须带上“..”,另外zlib可以暂时关闭,可能编译不过,这个可以单独编译。
另外如果需要编译静态库BUILD_SHARED_LIBS=OFF即可
内如如下:

#!/bin/sh
#aarch64-himix200-linux- arm-himix400-linux
cmake -D CMAKE_BUILD_TYPE=RELEASE  \
      -D CMAKE_C_COMPILER=aarch64-himix200-linux-gcc \
      -D CMAKE_CXX_COMPILER=aarch64-himix200-linux-g++ \
      -D BUILD_SHARED_LIBS=ON \
      -D CMAKE_CXX_FLAGS=-fPIC \
      -D CMAKE_C_FLAGS=-fPIC \
      -D CMAKE_EXE_LINKER_FLAGS=-lpthread -ldl \
      -D ENABLE_PIC=ON \
      -D WITH_1394=OFF \
      -D WITH_ARAVIS=OFF \
      -D WITH_ARITH_DEC=ON \
      -D WITH_ARITH_ENC=ON \
      -D WITH_CLP=OFF \
      -D WITH_CUBLAS=OFF \
     -D WITH_CUDA=OFF \
     -D WITH_CUFFT=OFF \
     -D WITH_FFMPEG=ON \
     -D WITH_GSTREAMER=ON \
     -D WITH_GSTREAMER_0_10=OFF \
     -D WITH_HALIDE=OFF \
    -D WITH_HPX=OFF \
    -D WITH_IMGCODEC_HDR=ON \
    -D WITH_IMGCODEC_PXM=ON \
    -D WITH_IMGCODEC_SUNRASTER=ON \
    -D WITH_INF_ENGINE=OFF \
    -D WITH_IPP=OFF \
    -D WITH_ITT=OFF \
    -D WITH_JASPER=ON \
    -D WITH_JPEG=ON \
    -D WITH_LAPACK=ON \
    -D WITH_LIBREALSENSE=OFF \
    -D WITH_NVCUVID=OFF \
    -D WITH_OPENCL=OFF \
    -D WITH_OPENCLAMDBLAS=OFF \
    -D WITH_OPENCLAMDFFT=OFF \
    -D WITH_OPENCL_SVM=OFF \
    -D WITH_OPENEXR=OFF \
    -D WITH_OPENGL=OFF \
    -D WITH_OPENMP=OFF \
    -D WITH_OPENNNI=OFF \
    -D WITH_OPENNNI2=OFF \
    -D WITH_OPENVX=OFF \
    -D WITH_PNG=ON \
    -D WITH_PROTOBUF=OFF \
    -D WITH_PTHREADS_PF=ON \
    -D WITH_PVAPI=OFF \
    -D WITH_QT=OFF \
    -D WITH_QUIRC=OFF \
    -D WITH_TBB=OFF \
    -D WITH_TIFF=ON \
    -D WITH_VULKAN=OFF \
    -D WITH_WEBP=ON \
    -D WITH_XIMEA=OFF \
    -D BUILD_ZLIB=OFF \
    -D ZLIB_INCLUDE_DIR=\
    -D ZLIB_LIBRARY_RELEASE= \
    -D  CMAKE_INSTALL_PREFIX=../output_31d\
    -D   WITH_GTK=OFF\
    ..

第二步:
在根目录下新建buid_31d和output_31d文件夹,拷贝build_opencv_hi3531dv200.sh到buid_31d
第三步:编译

  1. cd buid_31d;./build_opencv_hi3531dv200.sh
  2. make -j8;make install;
    完成编译后会在output_31d生成如下文件夹

总用量 4
drwxrwxr-x. 2 xxx  174 8月  29 10:08 bin
drwxrwxr-x. 4 xxx   35 8月  20 15:55 include
drwxrwxr-x. 3 xxx 4096 8月  29 10:08 lib
drwxrwxr-x. 3 xxx   20 8月  20 15:55 share
2.2 zlib移植
2.2.1 源码下载

zlib源码地址

2.2.2 编译

由于configure不支持cc,在网上看到好多解决方法,目前比较好用如下:

export CC=aarch64-himix200-linux-gcc
./configure --prefix=$PWD/_install
Checking for shared library support...
Building shared library libz.so.1.2.11 with aarch64-himix200-linux-gcc.
Checking for size_t... Yes.
Checking for off64_t... Yes.
Checking for fseeko... Yes.
Checking for strerror... Yes.
Checking for unistd.h... Yes.
Checking for stdarg.h... Yes.
Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf().
Checking for vsnprintf() in stdio.h... Yes.
Checking for return value of vsnprintf()... Yes.
Checking for attribute(visibility) support... Yes.

make;make install

总用量 280
-rw-r--r--. 1 xxx 152594 8月  29 14:15 libz.a
lrwxrwxrwx. 1 xxx     14 8月  29 14:15 libz.so -> libz.so.1.2.11
lrwxrwxrwx. 1 xxx     14 8月  29 14:15 libz.so.1 -> libz.so.1.2.11
-rwxr-xr-x. 1 xxx 127216 8月  29 14:15 libz.so.1.2.11
drwxrwxr-x. 2 xxx     21 8月  29 14:15 pkgconfig
2.3 libpng编译
2.3.1 源码下载

下载libpng源码libpng-1.2.56版本

2.3.2 编译
./configure CC=aarch64-himix200-linux-gcc --host=aarch64-himix200-linux --prefix=$PWD/_install 

报错:zlib not installed

checking for an ANSI C-conforming const... yes
checking for size_t... yes
checking whether struct tm is in sys/time.h or time.h... time.h
checking for working strtod... no
checking for pow... no
checking for pow in -lm... yes
checking for memset... yes
checking for pow... (cached) no
checking for pow in -lm... (cached) yes
checking for zlibVersion in -lz... no
configure: error: zlib not installed

所以需要上面我们编译的lib和include

export LDFLAGS="-L/tools/zlib-1.2.11/_install/lib"
export CPPFLAGS="-I/tools/zlib-1.2.11/_install/include" 

再次配置check通过。

make -j8;make install
总用量 2408
-rw-r--r--. 1 xxx 1174618 8月  29 14:26 libpng12.a
-rwxr-xr-x. 1 xxx    1089 8月  29 14:26 libpng12.la
lrwxrwxrwx. 1 xxx      18 8月  29 14:26 libpng12.so -> libpng12.so.0.56.0
lrwxrwxrwx. 1 xxx      18 8月  29 14:26 libpng12.so.0 -> libpng12.so.0.56.0
-rwxr-xr-x. 1 xxx  632944 8月  29 14:26 libpng12.so.0.56.0
lrwxrwxrwx. 1 xxx      10 8月  29 14:26 libpng.a -> libpng12.a
lrwxrwxrwx. 1 xxx      11 8月  29 14:26 libpng.la -> libpng12.la
lrwxrwxrwx. 1 xxx      11 8月  29 14:26 libpng.so -> libpng12.so
lrwxrwxrwx. 1 xxx      16 8月  29 14:26 libpng.so.3 -> libpng.so.3.56.0
-rwxr-xr-x. 1 xxx  650176 8月  29 14:26 libpng.so.3.56.0
drwxrwxr-x. 2 xxx      42 8月  29 14:26 pkgconfig
声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
xclshwd
红包 4 6 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
xclshwd
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区