rv1126利用rkmedia、opencv、rockx……完成人脸识别

一、总体框架

视频采集、处理使用rkmedia:vi模块进行视频输入、rga模块进行视频处理

人脸识别:先获取rga输出码流,再调用rkmedia的模型对人脸进行推理(线程1)

打框框:opencv(线程2),且在打完框后把视频输入至venc(编码)

rtsp推流:获得venc编码数据后进行rtsp推流

        根据这些模块、整体码流流向如下图:

二、部分笔记

        首先初始化了人脸数据库(init_face_data())其内容如下:

1.连接sql数据库,打开后可以看到其中也是简单的封装函数sqlite3_open

2.初始化了一个特殊类S_THREAD_MAP

3.map<string,rockx_face_feature_t>就是一个姓名与人脸特征的map

4.QueryFaceFeature是获取数据库中所有信息到map中 。涉及到对sql的操作

5.set_thread_map是对获取的所有人脸信息map保存到了一个全局表量数组里,保存在第task_id

void init_face_data()
{Connection_Sqlite3DataBase();int task_id = 0;S_THREAD_MAP thread_map;map<string, rockx_face_feature_t> maps = QueryFaceFeature();thread_map.thread_map = maps;set_thread_map(task_id, &thread_map);
}

Connection_Sqlite3DataBase内容如下

int Connection_Sqlite3DataBase()
{rc = sqlite3_open("/mnt/nfs/face.db", &db);if (rc != SQLITE_OK){fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));sqlite3_close(db);exit(1);}else{printf("You have opened a sqlite3 database named bind.db successfully!\nCongratulation! Have fun!\n");}return 0;
}

S_THREAD_MAP内部如下,map_id 以及一个姓名与人脸特征结构体

class S_THREAD_MAP{public:int map_id;map<string, rockx_face_feature_t> thread_map;
};

QueryFaceFeature内容如下:

map<string, rockx_face_feature_t> QueryFaceFeature()
{rockx_face_feature_t rockx_face_feature = {0, 0};map<string, rockx_face_feature_t> rockx_face_feature_map;sqlite3_stmt *stmt;char *sql = "select name, feature_size, face_feature from face_data_table";//准备查询语句 准备从db数据库查找sql(name feature_size face_feature)int ret = sqlite3_prepare(db, sql, strlen(sql), &stmt, 0);int id = 0, len = 0;char * name;int feature_size;if (ret == SQLITE_OK){//真正开始查找 当一行查找成功后执行下面代码while (sqlite3_step(stmt) == SQLITE_ROW){name = (char *)sqlite3_column_text(stmt, 0);printf("name = %s\n", name);feature_size = sqlite3_column_int(stmt, 1);printf("feature_size = %d\n", feature_size);//rockx_face_feature.feature = (MByte *)malloc(feature_size);const void *feature = sqlite3_column_blob(stmt, 2);   memset(rockx_face_feature.feature, 0, feature_size);memcpy(rockx_face_feature.feature, feature, feature_size);rockx_face_feature.len = feature_size;string str(name);//插入人脸数据rockx_face_feature_map.insert(pair<string, rockx_face_feature_t>(str, rockx_face_feature));}}sqlite3_finalize(stmt);sqlite3_close(db); //返回所有信息 return rockx_face_feature_map;
}

set_thread_map

int set_thread_map(unsigned int map_id, S_THREAD_MAP *map)
{pthread_mutex_lock(&g_thread_maps_mutex);g_thread_maps[map_id] = *map;pthread_mutex_unlock(&g_thread_maps_mutex);return 0;
}

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

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

相关文章

Golang | Leetcode Golang题解之第264题丑数II

题目&#xff1a; 题解&#xff1a; func nthUglyNumber(n int) int {dp : make([]int, n1)dp[1] 1p2, p3, p5 : 1, 1, 1for i : 2; i < n; i {x2, x3, x5 : dp[p2]*2, dp[p3]*3, dp[p5]*5dp[i] min(min(x2, x3), x5)if dp[i] x2 {p2}if dp[i] x3 {p3}if dp[i] x5 {p5…

艾迈斯欧司朗与greenteg推出的突破性体温监测技术已成为全球铁人三项的关键技术支持

中国 上海&#xff0c;2024年7月22日——全球领先的光学解决方案供应商艾迈斯欧司朗&#xff08;瑞士证券交易所股票代码&#xff1a;AMS&#xff09;今日宣布&#xff0c;与知名合作伙伴greenteg携手推出的CORE传感器为耐力运动领域带来新变革——其体温监测技术已成为全球铁人…

分类预测 | Matlab实现BES-LSSVM秃鹰算法优化最小二乘支持向量机多特征分类预测/故障诊断

分类预测 | Matlab实现BES-LSSVM秃鹰算法优化最小二乘支持向量机多特征分类预测/故障诊断 目录 分类预测 | Matlab实现BES-LSSVM秃鹰算法优化最小二乘支持向量机多特征分类预测/故障诊断分类效果基本介绍程序设计参考资料 分类效果 基本介绍 Matlab实现BES-LSSVM秃鹰算法优化最…

使用wireshark第一次捕获数据包

打开wireshark&#xff1a; 点击捕获&#xff0c;选项。 这里我选择以太网&#xff0c;然后点开始&#xff1a; 然后就成这样了&#xff1a; 点击左上角那个红色的按钮&#xff0c;可以暂停捕获&#xff0c;就变成了下面的样子&#xff1a; 这三个框有自己的名字&…

721.力扣每日一题7/15 Java(并查集)

博客主页&#xff1a;音符犹如代码系列专栏&#xff1a;算法练习关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 目录 解题思路 解题过程 时间复杂度 空间复杂度 Code 解题思路 本题的…

有什么图片转word 免费软件?6个软件帮助你快速转换文件

有什么图片转word 免费软件&#xff1f;6个软件帮助你快速转换文件 转换图片到Word文档的免费软件通常包括一些在线工具和桌面应用程序&#xff0c;它们可以帮助用户将图片中的文本提取并转换为可编辑的Word格式。以下是六个推荐的免费软件&#xff1a; 迅捷文字识别&#xff…

【深度学习教程】

文章目录 pytorch官方教程知识蒸馏&#xff1a;https://pytorch.org/tutorials/beginner/knowledge_distillation_tutorial.html 李宏毅-机器学习/深度学习https://speech.ee.ntu.edu.tw/~hylee/ml/2021-spring.phphttps://speech.ee.ntu.edu.tw/~hylee/ml/2022-spring.phphttp…

【LeetCode】day18:530 - 二叉搜索树的最小绝对差, 501 - 二叉搜索树中的众数, 236 - 二叉树的最近公共祖先

LeetCode 代码随想录跟练 Day18 530.二叉搜索树的最小绝对差501.二叉搜索树中的众数236.二叉树的最近公共祖先 530.二叉搜索树的最小绝对差 题目描述&#xff1a; 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数&am…

基于组态王和S7-200实现传感器连接的简单人机界面

在当今社会&#xff0c;工业自动化正以前所未有的速度发展&#xff0c;成为推动经济增长和提升生产效率的关键因素之一。随着科技的不断进步&#xff0c;自动化不仅仅是制造业的专利&#xff0c;也逐渐渗透到农业、交通、建筑等各个领域&#xff0c;为人们的生活带来了诸多变革…

星际漫游闪耀LEC授权展,COSMOSPANDA星际熊猫与BUNBUNX包小冥共绘国潮新篇章

上海&#xff0c;2024年7月17日 —— 在全球瞩目的2024年LEC全球授权展上海站盛大开幕之际&#xff0c;星际漫游携其两大国潮明星IP——COSMOSPANDA星际熊猫与bunbunx包小冥精彩亮相&#xff0c;为现场观众带来了一场融合视觉与文化的国潮盛宴。 展位盛况空前&#xff0c;国潮…

uniapp封装请求拦截器,封装请求拦截和响应拦截的方法

首先我们先看一下uni官方给开发者提供的uni.request用来网络请求的api 1 2 3 4 5 6 7 8 9 uni.request({ url: , method: GET, data: {}, header: {}, success: res > {}, fail: () > {}, complete: () > {} }); 可以看到我们每次请求数据的时候都需…

pytest-fixture

资料来源&#xff1a;虫师2020的个人空间-虫师2020个人主页-哔哩哔哩视频 支持类似unittest风格的fixture&#xff0c;即setup和teardown class类中的方法分类 类方法可以直接调用&#xff0c;需要添加装饰器&#xff0c;修改类中的变量 实例方法&#xff0c;需要先实例化&…

【移动应用开发】创建Hello World应用

目录 一、安装Android Studio &#xff08;2023.1.28&#xff09; 二、创建HelloWorld的项目 1. 新建一个项目&#xff0c;选择Empty Views Activity 2. 点击next之后&#xff0c;为项目命名为HelloWorld 3. 点击Finish之后等待项目创建 三、观察项目结构 1. 选择以Proj…

预测性营销与开源AI智能名片商城系统的融合创新:探索数据驱动的营销新纪元

摘要&#xff1a;在当今这个数据驱动的时代&#xff0c;企业面临着前所未有的市场复杂性和消费者行为的快速变化。为了在这样的环境中保持竞争力并实现持续增长&#xff0c;预测性营销已成为企业不可或缺的战略工具。本文深入探讨了预测性营销的基本原理、技术架构及其在市场营…

常用注意力机制 SENet CBAM ECA

在处理脑电信号时通常会用到一些注意力机制,来给不同的脑电通道不同的权重,进而体现出不同脑电通道在分类中的重要性。下面整理几种常见的通道注意力机制,方便以后查阅。 常用注意力机制 SENet CBAM ECA 注意力机制SENet(Squeeze-and-Excitation Network)SENet原理SENet P…

MySQL相关知识

一、什么是数据库&#xff1f; 数据库&#xff08;Database&#xff0c;简称DB&#xff09;概念&#xff1a; 长期存放在计算机内&#xff0c;有组织、可共享的大量数据的集合&#xff0c;是一个 数据“仓库”。 二、数据库的特点&#xff1a; 1.结构化&#xff1a;数据在数…

【leetcode】二分查找本质

标题&#xff1a;【leetcode】二分查找本质 水墨不写bug 正文开始&#xff1a;&#xff08;点击题目标题转跳到OJ&#xff09; 目录 &#xff08;O&#xff09;前言* &#xff08;一&#xff09; 在排序数组中查找元素的第一个和最后一个位置 思路详解&#xff1a; 参考代…

Python 爬虫 获取Instagram用户数据信息 Instagram API接口

爬取instagram用户主页数据信息 详细采集页面如下 https://www.instagram.com/abdallhdev/?hlen 请求API http://api.xxxx.com/ins/profile/username?usernameabdallhdev&tokentest 请求参数 返回示例 联系我们&#xff08;更多接口详见主页专栏&#xff09; 更多精彩…

Redis--12--1--分布式锁---java

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 Redis与分布式锁Jedis实现1.RedisConfig2.RedisDistLock3.应用4.加上看门狗逻辑 RedisDistLockWithDog redisson实现1.依赖2.代码 Redis与分布式锁 Jedis实现 1.Re…

VScode通过Graphviz插件和dot文件绘制层次图,导出svg

1、安装插件 在VScode中安装Graphviz Interactive Preview插件&#xff0c;参考。 2、创建dot文件 在本地创建一个后缀为dot的文件&#xff0c;如test.dot&#xff0c;并写入以下内容&#xff1a; digraph testGraph {label "层次图";node [shape square; widt…