LinkSVP例子之三:机器视觉基础演示,使用OpenCV实现图像二值化

背景

    为了方便客户做AI的应用,海思的芯片提供HiSVPHiIVE等引擎。HiSVP(HiSilicon Smart Vision Platform)是海思媒体处理芯片智能视觉异构加速平台。该平台包含了CPUDSPNNIE(Neural Network Inference Engine)等多个硬件处理单元和运行在这些硬件上SDK 开发环境,以及配套的工具链开发环境。HiIVE(HiSilicon Intelligent Video Engine)是海思媒体处理芯片智能分析系统中的硬件加速模块。用户基于 HiIVE 开发智能分析方案可以加速智能分析,降低 CPU 占用。 当前 HiIVE 提供的算子可以支撑开发视频诊断、周界防范等智能分析方案。
    HiSVP的开发框架如下图所示:
在这里插入图片描述

LinkSVP简介

    LinkSVP(Smart Vision Platform)整合了海思HiSVPHiIVENCNNOpenCV等,未来还会支持tensorflowLinkSVP基于LinkLib,因此,借助LinkLib的便捷性,开发者无需处理底层视频传输,可以更专注于算法的设计与优化。开发者基于LinkFrame类创建的对象,只需要设置目标算法需要的分辨率、帧率,系统会自动处理底层视频接口,开发者只需要在视频帧到达时调用其算法即可。
    借助NCNN的整合,即使是在不支持NNIE的芯片上,也能进行简单的深度学习运算。
    LinkSVP的开发框架如下图所示:
在这里插入图片描述

UseOpencv图像二值化示例

该示例程序演示了如何使用opencv进行图像二值化操作
当IVE系统的功能无法满足需求时,我们可以借助强大的opencv来实现,但是请注意观察cpu性能。

准备工作

  • 参照用户手册搭建开发环境、编译3531D工程、配置网络启动参数。
  • 将带有HDMI输出功能的设备(如摄像机、笔记本、机顶盒等)接入评估板的HDMI-A接口
  • 将评估板的HDMI-OUT接显示器(支持1080P即可,程序默认输出1080P60)。
  • 上电,进入/root/demo目录
  • 运行UseOpencv程序

运行结果

在这里插入图片描述

完整工程

完整工程参见:https://gitee.com/LinkPi/LinkSVP/tree/master/UseOpencv

主要源代码

main.cpp

#include <QCoreApplication>
#include "Link.h"
#include "Sample.h"

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    Link::init();

    LinkObject *vi=Link::create("InputVi");
    QVariantMap dataVi;
    dataVi["interface"]="HDMI-A";
    vi->start(dataVi);

    Sample *SP=new Sample();
    SP->start();

    LinkObject *vo=Link::create("OutputVo");
    QVariantMap dataVo;
    dataVo["type"]="hdmi";
    vo->start(dataVo);

    vi->linkV(SP)->linkV(vo);

    return a.exec();
}

Sample.cpp

#include "Sample.h"

Sample::Sample(QObject *parent) : LinkFrame(parent)
{
    data["framerate"]=10;
    data["width"]=1280;
    data["height"]=720;

    //建议使用如下方法把内存映射到cache再进行CPU操作,否则速度很慢
    mem["cache"]=IVEMem(1280,720,3,true);
}

void Sample::oneFrame()
{
    copy(mem["in"],mem["cache"]);
    wait();

    Mat mat=Mat(data["height"].toInt(), data["width"].toInt(), CV_8UC1, (void*)mem["cache"].data());

    threshold(mat, mat, 128, 255, CV_THRESH_BINARY);

    mem["cache"].flush();
    copy(mem["cache"],mem["out"]);
    wait();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值