在做车牌识别项目,通过先对识别区域内进行目标识别,能降低CPU的占用率,在检测到有运动目标的时候,再做车牌识别。

//图像差分
 s32Ret = HI_MPI_IVE_Sub(&IveHandle, &pstGmm->stSrc,
&pstGmm->stbgImg, &pstGmm->stBgDiffFg, &pstGmm->stSubCtrl,
bInstant);
 if (HI_SUCCESS != s32Ret)
    {
           
SAMPLE_PRT("HI_MPI_IVE_Sub fail,Error(%#x)\n", s32Ret);
            return
s32Ret;
    }
 //差分图像二值化
 s32Ret = HI_MPI_IVE_Thresh(&IveHandle,
&pstGmm->stBgDiffFg, &pstGmm->stBinaryImg,
&pstGmm->stThrCtrl,  bInstant);
 if (HI_SUCCESS != s32Ret)
   
{
            SAMPLE_PRT("HI_MPI_IVE_Thresh fail,Error(%#x)\n",
s32Ret);
            return s32Ret;
    }
 //腐蚀操作
 s32Ret = HI_MPI_IVE_Erode(&IveHandle,
&pstGmm->stBinaryImg, &pstGmm->stErodeImg,
&pstGmm->stErodeCtrl, bInstant);
    if (HI_SUCCESS != s32Ret)
   
{
        SAMPLE_PRT("HI_MPI_IVE_Erode fail,Error(%#x)\n",
s32Ret);
        return s32Ret;
    }
 
 //对二值化图积分
 s32Ret = HI_MPI_IVE_Integ(&IveHandle, 
&pstGmm->stErodeImg, &pstGmm->stDiffInteg,
&pstGmm->stIntegCtrl, bInstant);
    if (HI_SUCCESS != s32Ret)
   
{
            SAMPLE_PRT("HI_MPI_IVE_Integ fail,Error(%#x)\n",
s32Ret);
            return s32Ret;
    }
 pu64VirDataDiff =
(HI_U32*)pstGmm->stDiffInteg.pu8VirAddr[0];
 //计算识别区域内目标的像素点
 //x1-y1
 HI_U32 index =
(g_recogArea.y+g_recogArea.height-1)*pstGmm->stInteg.u16Stride[0]+g_recogArea.x+g_recogArea.width-1;
 HI_U32
sum_x1_y1 = (HI_U32) pu64VirDataDiff[index];
 //HI_U32 sum_x1_y1 = (HI_U32)
pu64VirDataDiff[pstGmm->stInteg.u16Height*pstGmm->stInteg.u16Stride[0]-1];
 //x0-y0
 index =
g_recogArea.y*pstGmm->stInteg.u16Stride[0]+g_recogArea.x;
 HI_U32
sum_x0_y0 = (HI_U32) pu64VirDataDiff[index];      //    (HI_U32)
pu64VirDataDiff[0];
  //x0-y1
 index =
(g_recogArea.y+g_recogArea.height-1)*pstGmm->stInteg.u16Stride[0]+g_recogArea.x;
 HI_U32
sum_x0_y1 = (HI_U32) pu64VirDataDiff[index];
 
 //x1-y0
 index
=g_recogArea.y*pstGmm->stInteg.u16Stride[0]+g_recogArea.x+g_recogArea.width-1;
 HI_U32
sum_x1_y0 = (HI_U32) pu64VirDataDiff[index];
 HI_U32  motionArea = sum_x1_y1 + sum_x0_y0 - sum_x0_y1 -
sum_x1_y0;
 //printf("----------sum_x1_y1=%u---sum_x0_y0=%u----motionArea is %d
----number=%d\n",sum_x1_y1, sum_x0_y0, motionArea, sum_x1_y1);
 //有运动目标
 if(motionArea>300)
 {
  pstGmm->objectFlag =
3;
 }else
 {
  if(pstGmm->objectFlag>0)
  {
   pstGmm->objectFlag--;
  }
  
 }
 
以上为实现的代码。
遇到一个问题,在海思hi3516上开发,malloc的内存进行操作比mmz分配的内存快,这个怎么解决?

海思hi3516 ive运动目标检测简单实现的更多相关文章

  1. 用VS2013+VELT-0.1.4进行海思平台 Linux内核 的开发

    快乐虾 http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651) 欢迎转载,但请保留作者信息 本文仅适用于vs20 ...

  2. 用vs2013+velt-0.1.4进行嵌入式开发 进行海思平台 UBOOT 开发

    1.1    什么是VELT VELT的全称是Visual EmbedLinuxTools,它是一个与visual gdb类似的visual studio插件,用以辅助完成Linux开发.利用这个插件 ...

  3. 【ARM-Linux开发】用VS2013+VELT-0.1.4进行海思平台 Linux内核 的开发

    1.1    什么是VELT VELT的全称是Visual EmbedLinuxTools,它是一个与visual gdb类似的visual studio插件,用以辅助完成Linux开发.利用这个插件 ...

  4. Hi3516开发笔记(一):海思HI3516DV300芯片介绍,入手开发板以及Demo测试

    前言   目前主流国产芯片为RV11XX.RK33XX.Hi35XX系列,本系列开启Hi3516系列的开发教程.   Hi3516DV300芯片介绍   Hi3516DV300为专业行Smart IP ...

  5. [转帖]IPC网络高清摄像机基础知识1(IPC芯片市场分析以及“搅局者”华为海思 “来自2013年”)

    IPC网络高清摄像机基础知识1(IPC芯片市场分析以及“搅局者”华为海思 “来自2013年”) 2016-06-02 14:23:49 Times_poem 阅读数 9734更多 分类专栏: IPC网 ...

  6. 主流芯片解决方案Ambarella的高清网络摄像机、德州仪器和控制海思

    (本文由四川艾普作为数码科技有限公司 苏斌.范清华 收集) 高清网络视频监控发展到今天.正的高清时代.诸多有实力的高清摄像机厂家的产品线也逐渐完好起来,高清网络视频监控的配套产品有更加丰富和成熟.与此 ...

  7. 海思H264解码库 hi_h264dec_w.dll 水印问题

    上一篇   海思h264解码库 , 实现了H264帧的简单解码,但更换相机后,出现了解码视频中央出现水印的问题,水印如下图 查找网络,基本就这一篇相关的,还没给出好的解决办法. http://bbs. ...

  8. 海思板卡SATA最佳读写块大小测试

    1    引言 应需求,在海思板子上测试SATA读写速度,用dd指令,每次分别读/写不同大小的块    (bs),同时检测运行dd命令CPU占比,记录读/写速度和CPU占比. 2    实验过程 2. ...

  9. 海思uboot启动流程详细分析(二)

    1. 第二个start.S 从start_armboot开始,在startup.c中有包含#include <config.h> 在config.h中: /* Automatically ...

随机推荐

  1. java既然存在gc线程,为什么还存在内存泄漏?

    java既然存在gc线程,为什么还存在内存泄漏? 1.既然 Java 的垃圾回收机制能够自动的回收内存,怎么还会出现内存泄漏的情况呢?这个问题,我们需要知道 GC 在什么时候回收内存对象,什么样的内存 ...

  2. 2019/2/23Scala学习开始(Scala简介)

    Scala简介    Scala是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性. Scala运行在Java虚拟机上,并兼容现有的Java程序 ...

  3. git操作大全

    分支克隆 1. git clone [git路径] #克隆仓库代码 2. git clone [Git路径] -b [分支name] #克隆仓库下某分支代码 查看分支 1.git branch #查看 ...

  4. Java获取本地IP地址和主机名

    方式一:通过java.net.InetAddress类获取 public void test1() { try { InetAddress addr = InetAddress.getLocalHos ...

  5. CentOS 7系统上制作Clonezilla(再生龙)启动U盘并克隆双系统

    笔记本安装的是双系统:Win7 64位,CentOS 7 64位. 政采就是个巨大的坑,笔记本标配的是5400转的机械硬盘,开机时间常常要一至两分钟,软件运行起来时各种数据的读写也非常慢,忍无可忍,决 ...

  6. learning coap protocol

    reference: http://coap.technology/spec.html

  7. day_41_mysql

    学习目标 学习目标 01. 数据库的介绍 02. 数据库的类型 关系型数据库(RDBMS) 非关系型数据库(NoSQL) 02.1 关系型数据库核心元素 03. MySQL的基本介绍 04. 常用入门 ...

  8. Linux的常识

    用到$是环境变量查询的开头 # echo $LANG查看编码 ls -l 是查看本地的所有文件的目录 以list的形式罗列出来 cd .. 上一层的目录 查看当前目录下有哪些文件 ll 等于ls -l ...

  9. 配置合适的Visual Studio 2017 开发环境(其它版本的也适用)

    1.VS 安装完成后,可以重新配置合适的开发环境 第一步: 第二步: 第三步: 第四步:选择合适自己的开发环境 这里我选择常规,具体的可以看窗口右边的说明

  10. Python爬虫入门之Urllib库的基本使用

    那么接下来,小伙伴们就一起和我真正迈向我们的爬虫之路吧. 1.分分钟扒一个网页下来 怎样扒网页呢?其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器解 ...