T31开发笔记: 移动侦测

若该文为原创文章,转载请注明原文出处。

最近在测试创安源IPC时发现摄像头的视频流有移动侦测功能 ,拆解后发现使用的是T31,刚好手头上有淘宝买50多点的T31摄像头,就自己现在了个简易DEMO测试一下。

一、硬件和开发环境

1、硬件:T31X+SC5235 

2、开发环境: ubuntu16.04-64bit

3、编译器:mips-gcc540-glibc222-32bit-r3.3.0.tar.gz

注:板子和和WIFI模块是某淘上淘的,使用的是RTL8188,使用的是USB接口,uboot和内核是自己裁剪移植的,内核默认自带WIFI驱动,所以不用移植可以直接使用。

二、移动侦测原理

以前有使用过海思hi3516ev200的移动侦测功能,感觉原理差不多。

运行的demo是sample-Encoder-h264-IVS-base-move.c

根据DEMO,移动侦测使用的是子流640*360,以区域方式来检测是否有移动,有移动输出1,

即把640*360分成45*80个8*8的区域

由此知道了移动的大概位置。而我试验的目的是通过这些区域算坐标并画框显示在界面上。

三、使用步骤

IMP 通过IVS的通用接口API调用实例化的IMPIVSInterface将智能化分析算法嵌入到SDK中来分析SDK中的frame图像。

IMPIVSInterface为通用算法接口,具体算法通过实现此接口并将其传给IMP IVS达到在SDK运行具体算法的目的。

一个channel有且仅为单个算法示例的载体,必须将具体实现的算法接口传给具体的channel才能在SDK中运行算法。

IMPIVSInterface 成员 param 为成员函数 init 的参数。

IMP_IVS 会在传给成员函数 ProcessAsync 参数的 frame 时对其进行外部加锁, ProcessAsync 必须在使用完 frame 后调用 IMP_IVS_ReleaseData 释放 frame,以免死锁。

除上述通过绑定在数据流中的 IMP IVS 实现算法调用之外,还提供一种非绑定的方式实现算法 调 用 , 即 获 取 framesouce channel 的 frame 图 像 , 直 接 调 用 IMPIVSInterface 的成员函数实现算法处理。

大部分情况下,我们使用的都是不绑定的方式进行移动侦测算法的获取的。

绑定模式的算法使用方法:

非绑定模式调用IVS平台

具体的API参考API手册。

四、代码说明

sample-Encoder-h264-IVS-base-move例程已经输出了参数,结构体如下:

其他数据data表示意思个人不理解,没有变化为0,有变化不为0,有人知道望告知。

输出总的数据是3600即80*45通过下面代码他数据重新整理成一个多维数组。

把检测到的值不为0,就表示1方式的方式存在arary[45][80]的数组里。 

接下来通过算法,自己出为1的区域,

计算边界值

这个函数的作用是求一个10x10数组中值为1的元素的最大和最小行和列坐标

通过此算法,即可获取到对应的区域

附完整的测试代码:

#include <stdio.h>  
#include <limits.h> // For INT_MAX and INT_MIN  #define ROWS 10  
#define COLS 10  void findMinMaxCoordinates(int array[ROWS][COLS], int *minRow, int *minCol, int *maxRow, int *maxCol) {  *minRow = INT_MAX;  *minCol = INT_MAX;  *maxRow = INT_MIN;  *maxCol = INT_MIN;  for (int i = 0; i < ROWS; ++i) {  for (int j = 0; j < COLS; ++j) {  if (array[i][j] == 1) {  if (i < *minRow) *minRow = i;  if (j < *minCol) *minCol = j;  if (i > *maxRow) *maxRow = i;  if (j > *maxCol) *maxCol = j;  }  }  }  
}  int main() {  int array[ROWS][COLS] = {  0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,};  int minRow, minCol, maxRow, maxCol;  findMinMaxCoordinates(array, &minRow, &minCol, &maxRow, &maxCol);  if (minRow != INT_MAX && minCol != INT_MAX) {  printf("Minimum coordinates: Row = %d, Col = %d\n", minRow, minCol);  printf("Maximum coordinates: Row = %d, Col = %d\n", maxRow, maxCol);  printf("(%d, %d) (%d, %d)\n", minCol, minRow ,maxCol, maxRow);} else {  printf("No elements with value 1 found in the array.\n");  }  return 0;  
}

把获取的坐标存到p00和p01结构体内,

p00.x = minCol*8*3;
p00.y = minRow*8*3;
 
p01.x = maxCol*8*3;
p01.y = maxRow*8*3;

说明乘于8是因为roi区域是8*8, 乘于3是因为我在主码流1920*1080上叠加了OSD画框显示功能 。

所以坐标放大3倍 。

OSD画框参考的是sample_OSD.c例程。在update_thread更新线程里添加了显示框的坐标点。

五、测试结果

输出感觉有点不灵敏,具体参数还有待调试。

此方式是个人想到的一种方法,有其他方式望互相讨论。

如有侵权,或需要完整代码,请及时联系博主。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/1906.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言 分支控制语句之 if

然后 我们来说 流程控制语句之 if 选择控制结构 是通过 分支语句来实现的 其中 包括 单分支选择语句通过 (if) 来实现 双分支语句通过 (if) 和 (else) 实现 多分支语句通过 (if) (else if) (else) 实现 对于单分支来讲 它控制的语句就是 要嘛做 要嘛不做 好比如 放假了 你是…

【极速前进】20240422:预训练RHO-1、合成数据CodecLM、网页到HTML数据集、MLLM消融实验MM1、Branch-Train-Mix

一、RHO-1&#xff1a;不是所有的token都是必须的 论文地址&#xff1a;https://arxiv.org/pdf/2404.07965.pdf 1. 不是所有token均相等&#xff1a;token损失值的训练动态。 ​ 使用来自OpenWebMath的15B token来持续预训练Tinyllama-1B&#xff0c;每1B token保存一个che…

夜鸦国际服账号验证怎么办 夜鸦国际服账号认证的详细教程

夜鸦国际服账号验证怎么办 夜鸦国际服账号认证的详细教程 今天为大家带来的是《夜鸦》这款游戏&#xff0c;游戏背景是基于13世纪欧洲背景的MMORPG游戏&#xff0c;这款游戏以其沉浸式的游戏体验和流畅的打斗为特色。玩家可以选择战士、剑士、猎人或女巫等角色&#xff0c;体验…

AQS(AbstractQueuedSynchronizer)队列同步器源码解读

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Java全栈-专栏 &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正 目录 1. 前言 2. AOS、AQS、AQLS的区别 3. AQS的底层原理 3.1. 核心思想 3.2. 数…

李廉洋:4.23黄金休市之后大幅下跌,原油小幅度上涨。走势分析!

今年以来推动金价上涨的因素是亚洲的需求&#xff0c;很可能来自各国央行。最近又有零售买盘和一些金融买盘作为补充。目前的问题是&#xff0c;不断上升的债券收益率正在争夺资金。美国2年期国债的收益率接近5%&#xff0c;在美联储降息导致收益率开始下降之前&#xff0c;这仍…

JavaScript权威指南(第7版) 笔记 - 第 7 章 数组

能用代码说清楚的&#xff0c;绝不多废话&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; Linux创始人Linus的名言&#xff1a;Talk is cheap&#xff0c;show me the code ! &#xff0c;博主技术博文会精心给出能说明问题的范例代码&#xff01;…

Qt实现XYModem协议(五)

1 概述 XMODEM协议是一种使用拨号调制解调器的个人计算机通信中广泛使用的异步文件运输协议。这种协议以128字节块的形式传输数据&#xff0c;并且每个块都使用一个校验和过程来进行错误检测。使用循环冗余校验的与XMODEM相应的一种协议称为XMODEM-CRC。还有一种是XMODEM-1K&am…

35K的鸿蒙音视频开发岗位面经分享~

一个月前&#xff0c;阿里云在官网音视频终端 SDK 栏目发布适配 HarmonyOS NEXT 的操作文档和 SDK&#xff0c;官宣 MediaBox 音视频终端 SDK 全面适配 HarmonyOS NEXT。 此外&#xff0c;阿里云播放器 SDK 也在华为开发者联盟官网鸿蒙生态伙伴 SDK 专区同步上线&#xff0c;面…

面向对象设计与分析40讲(25)中介模式、代理模式、门面模式、桥接模式、适配器模式

文章目录 门面模式代理模式中介模式 之所以把这几个模式放到一起写&#xff0c;是因为它们的界限比较模糊&#xff0c;结构上没有明显的差别&#xff0c;差别只是语义上。 这几种模式在结构上都类似&#xff1a; 代理将原本A–>C的直接调用变成&#xff1a; A–>B–>…

负采样重要吗?它的理论与应用综述

Does Negative Sampling Matter? A Review with Insights into its Theory and Applications 负采样重要吗&#xff1f;它的理论与应用综述 Does Negative Sampling Matter? A Review with Insights into its Theory and Applications Zhen Yang, Ming Ding, Tinglin Huang,…

基于python实现web漏洞挖掘技术的研究(django)

基于python实现web漏洞挖掘技术的研究(django) 开发语言:Python 数据库&#xff1a;MySQL所用到的知识&#xff1a;网络爬虫&#xff0c;SQL注入&#xff0c;XSS漏洞工具&#xff1a;pycharm、Navicat、Maven 系统的实现与漏洞挖掘 系统的首页面 此次的系统首页面是登录的页…

BootstrapAdmin Net7:基于RBAC的后台管理框架,实现精细化权限管理与多站点单点登录

BootstrapAdmin Net7&#xff1a;基于RBAC的后台管理框架,实现精细化权限管理与多站点单点登录 摘要 随着企业信息化建设的不断深入&#xff0c;后台管理系统在企业运营中扮演着越来越重要的角色。本文介绍了一款基于RBAC&#xff08;Role-Based Access Control&#xff09;的…

291个地级市资源错配指数、劳动和资本相对扭曲指数(2006-2021年)

01、数据介绍 资源错配指数&#xff08;Misallocation Index&#xff09;是一个用于衡量资源配置效率的指标&#xff0c;它衡量的是生产要素的配置是否合理&#xff0c;是否达到了最优的状态。资源错配指数越高&#xff0c;资源的利用效率越低。资源错配指数主要用于衡量各种生…

企业实施定制鞋厂ERP软件需要注意哪些问题?

企业实施定制鞋厂ERP软件是个复杂的管理系统工程&#xff0c;为了成功地为企业定制实施ERP软件&#xff0c;需要注意和解决几个关键的问题&#xff1a; . 确立ERP系统实施和定制的决策者&#xff1b;. 做好前期咨询与调研工作&#xff1b;. 做好系统产品或项目迭代规划&#x…

Uds诊断协议的请求和响应的寻址

一根总线上挂载着很多ECU&#xff0c;那么基于CAN协议UDS的诊断请求报文&#xff0c;诊断仪是如何发给ECU的&#xff1f;如何精准的找到想要诊断的那个ECU&#xff1f;ECU又是如何将诊断响应的报文返回给诊断仪&#xff1f; 在UDS协议中&#xff0c;规定了诊断请求和响应报文发…

记录:阿里云服务器网站搭建(3)

Docker安装配置Tomcat 拉取镜像 docker pull tomcat:8启动一个tomcat容器用于拷贝配置文件 docker run -d -p 8080:8080 --name tomcat tomcat:8拷贝容器内tomcat配置文件和日志到本地准备映射 docker cp tomcat:/usr/local/tomcat/conf /mydata/tomcat/confdocker cp tomca…

WebStorm2024安装包(亲测可用)

目录 一、软件简介 二、软件下载 一、软件简介 WebStorm是一款由JetBrains公司开发的强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;专门用于前端开发。它提供了丰富的功能和工具&#xff0c;包括代码编辑器、调试器、版本控制集成等&#xff0c;使开发人员能够更…

LocalAi,Ollama+AnythingLLM搭建部署本地大模型AI知识库,汉化版本

AnythingLLM 是一个全栈应用程序&#xff0c;您可以使用商业现成的 LLM 或流行的开源 LLM 和 vectorDB 解决方案来构建私有 ChatGPT&#xff0c;无需任何妥协&#xff0c;您可以在本地运行&#xff0c;也可以远程托管并能够智能聊天以及您提供的任何文件。 AnythingLLM 将您的文…

人工智能大模型培训老师叶梓 探索知识库问答中的查询图生成:处理多跳复杂问题的新方法

在人工智能领域&#xff0c;基于知识库的问答&#xff08;KBQA&#xff09;技术正变得越来越重要。它使得机器能够理解自然语言问题&#xff0c;并从结构化的知识库中检索答案。然而&#xff0c;面对多跳复杂问题&#xff0c;传统的KBQA方法往往力不从心。近期&#xff0c;研究…

芒果超媒的“乘风破浪”,差了一点市场海浪的反馈

4月21日晚间&#xff0c;芒果超媒发布了2023年度&2024一季度报告。 芒果超媒2023年实现营业收入146.28亿元&#xff0c;同比增长4.66%&#xff1b;净利润35.56亿元&#xff0c;同比增长90.73%&#xff1b;基本每股收益1.90元。公司拟每10股派发现金红利1.8元。2024年第一季…