海思3559AV100:移植OpenCV3.4.1

海思3559AV100:移植OpenCV3.4.1 老干部 2024-01-24 14:47:47 155

文章目录

环境准备

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(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拷至板上,运行程序,得到阈值分割效果:


声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 点赞 收藏 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
老干部
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

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

举报反馈

举报类型

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

详细说明

审核成功

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

审核失败

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

小包子的红包

恭喜发财,大吉大利

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

    易百纳技术社区