【EASY EAI Nano开源套件试用体验】5AI功能测试之多人脸识别

网友投稿 408 2022-10-27

【EASY EAI Nano开源套件试用体验】5AI功能测试之多人脸识别

人脸检测,只是将图像中的人脸的位置检测出来,人脸识别,又增加了一部,在检测到人脸后,还要识别出这张脸是谁的脸。

主要来看下人脸识别组件。

face_recognition.h的主要内容

一些参数:

ctx:输入参数,rknn_context句柄path:输入参数,算法模型路径face_image:输入参数,图像数据输入(cv::Mat是Opencv的类型)feature:输出参数,算法输出的人脸特征码

face_alignment.h的主要内容

cv::Mat face_alignment(cv::Mat img, cv::Point2f* points);

geometry.h的主要内容

typedef struct{ float x; float y;}fPoint_t;​typedef struct{ float left; //x1 float top; //y1 float right; //x2 float bottom; //y2}fRect_t;​typedef struct{ int32_t x; int32_t y;}s32Point_t;​typedef struct{ int32_t left; //x1 int32_t top; //y1 int32_t right; //x2 int32_t bottom; //y2}s32Rect_t;​//判断点是否在矩形内extern bool point_in_rect(s32Point_t point, s32Rect_t rect);​//计算矩形面积extern int32_t calc_rect_square(s32Rect_t rect);​//找出面积较小矩形extern s32Rect_t min_rect(s32Rect_t rect1, s32Rect_t rect2);​//找出面积较大矩形extern s32Rect_t max_rect(s32Rect_t rect1, s32Rect_t rect2);​//判断矩形是否相交或相切extern bool rect_is_intersect(s32Rect_t rect1, s32Rect_t rect2);​//计算两矩形相交部分面积(若相切,面积也为0)extern int32_t calc_rect_intersect_square(s32Rect_t rect1, s32Rect_t rect2);​//计算[两矩形相交部分面积]与[小矩形面积]之比extern double calc_intersect_of_min_rect(s32Rect_t rect1, s32Rect_t rect2);​//计算两矩形的交并比extern double calc_intersect_of_union(s32Rect_t rect1, s32Rect_t rect2);

2 代码分析与修改

2.1 图像采集与显示线程(主线程)

重新定义识别结果:

typedef struct{ bool bHasFace; //是否检测到人脸 bool bMatch; //是否与注册的人脸匹配 char idStr[128]; //匹配的人脸的id char nameStr[128]; //匹配的人脸的名称 float similarity; //匹配的相似度 uint64_t useTime; //匹配用时 uint32_t x1; //识别到的人脸框的4个点uint32_t y1;uint32_t x2;uint32_t y2;}Result_t;

主函数逻辑如下,和上篇进行人脸检测的代码逻辑类似。

2.2 人脸识别处理

3 测试

4 总结

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:kubernetes快速入门-基础概念
下一篇:什么是Kubernetes Operator及其对SRE的重要性
相关文章

 发表评论

暂时没有评论,来抢沙发吧~