海思3559AV100:移植OpenCV3.4.1

环境准备

Opencv国内源-下载opencv-3.4.1

1.下载opencv-3.4.1.zip(2020-03-08 12:59 87M)

下载完毕,解压后得到opencv-3.4.1文件目录。进入该目录后新建build和install两个目录

build
install

2.安装cmake

apt-get install cmake-qt-gui

3.安装gtk

apt-get install libgtk2.0-dev pkg-config

CMAKE基本配置

启动cmake:

cmake-gui
  • 填写源目录和cmake的生成目录,完毕后点击Configure进行配置。(首次启动界面可能和下图不一致)(生成目录为你刚才新建的build目录)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    上图中:
Operation System : aarch64-himix100-linux-gcc
C    : /opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin/aarch64-himix100-linux-gcc
C++  : /opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin/aarch64-himix100-linux-g++
Target Root : /opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin/
  • Finish点击后,需要再次点击Configure,结果如下:
    在这里插入图片描述
  • 设置安装路径:该路径为你刚才opencv目录下新建的install目录
    在这里插入图片描述

配置CMAKE其他选项

(如果入门的话,按以下配置;否则可以自行修改)

  • 填写这几项CMAKE高级选项,这是为了防止出现Opencv库编译期间报错问题。
    在这里插入图片描述
CMAKE_AR : /opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin/aarch64-himix100-linux-ar
CMAKE_EXE_LINKER_FLAGS : -lpthread -lrt -ldl
CMAKE_EXE_LINKER_FLAGS_DEBUG : -lpthread -lrt -ldl
  • 勾选BUILD_opencv_world,这步是为了防止出现工程编译和运行期间库目录问题。
    在这里插入图片描述
    如果本项不勾选,工程编译和运行期间库目录问题如下图所示:
    在这里插入图片描述
  • 修改源码:3rdparty/protobuf/src/google/protobuf/stubs/common.cc,这是为了防止Opencv库编译期间报错问题
    在这里插入图片描述
#define HAVE_PTHREAD
  • 修改源码:3rdparty/libpng/pngpriv.h(130行),这是为了防止Opencv库编译期间报错问题
#  if (defined(__ARM_NEON__) || defined(__ARM_NEON)) && \

修改为:

/*#  if (defined(__ARM_NEON__) || defined(__ARM_NEON)) && \*/
# if defined(PNG_ARM_NEON) && (defined(__ARM_NEON__) || defined(__ARM_NEON)) && \
  • 修改ZLIB库包含目录,为了防止Opencv库编译期间找不到zlib包含路径
    在这里插入图片描述
/home/jqy/opencv-3.4.1/3rdparty/zlib
  • 上述要点配置完毕后,点击Configure,点击Generate,生成完毕,准备编译OPENCV。

CMAKE编译Opencv库

到build目录下执行make(-j16可以让16个核同时编译,加快编译速度)

make -j16
make install

完成后,在nstall目录下找到动态链接库和头文件。

板上测试

测试代码如下:(main.cpp)

#include <stdlib.h>
#include <iostream>
#include<opencv2/opencv.hpp>

using namespace std;
using namespace cv;

void cvTest()
{
    Mat img = imread("lena.jpg");

    Mat grad_x;
    Sobel(img, grad_x, CV_16S, 1, 0);
    Mat grad_y;
    Sobel(img, grad_y, CV_16S, 0, 1);

    Mat gradImage = abs(grad_x) + abs(grad_y);

    double minGrad, maxGrad;
    minMaxLoc(gradImage, &minGrad, &maxGrad);
    Mat gradImage_8U;
    gradImage.convertTo(gradImage_8U, CV_8U, 255./maxGrad);

    Mat thresholdedImage;//阈值化后的二值图
    threshold(gradImage_8U, thresholdedImage, 20, 255, THRESH_BINARY_INV);

    imwrite("gradImage_8U.jpg",gradImage_8U);
    imwrite("thresholdedImage.jpg",thresholdedImage);

}

int main()
{
    cvTest();
    return 0;
}

编译指令:(其中,-I XXX -L XXX 这个目录根据opencv库生成目录自行修改)

aarch64-himix100-linux-g++ main.cpp -fPIC -lrt -D_GNU_SOURCE -lpthread -lm -ldl -lopencv_world -I '/home/jqy/opencv-3.4.1/install/include' -L '/home/jqy/opencv-3.4.1/install/lib' 

将libopencv_world.so拷至板上,运行程序,得到阈值分割效果:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

参考链接:
海思3519A上移植OpenCV3.x

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值