热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

jetsonnano人脸识别face_recognition

root_face目录结构:人名:人脸照片importface_recognitionimportcv2importosimportnumpya

root_face目录结构:
人名:
人脸照片
在这里插入图片描述

import face_recognition
import cv2
import os
import numpy as npdef face_encode(img, model='large'):points = face_recognition.face_locations(img, model='cnn')encodeing = face_recognition.face_encodings(img, points, model=model)return points, encodeingpath = r'./root_face'
dirs = os.listdir(path)
face_dict = {}
root_face = []
index = 0
for dir in dirs:dir_path = os.path.join(path, dir)files = os.listdir(dir_path)for file in files:file_path = os.path.join(dir_path, file)img = cv2.imread(file_path)w, h = img.shape[1::-1]ratio = w / hh = 400img = cv2.resize(img, (int(h * ratio), h))_, encodeing = face_encode(img)face_dict['{}'.format(index)] = '{}'.format(dir)root_face.append(encodeing[0])index += 1def gstreamer_pipeline(capture_width=1280,capture_height=720,display_width=1280,display_height=720,framerate=24,flip_method=0,
):return ("nvarguscamerasrc ! ""video/x-raw(memory:NVMM), ""width&#61;(int)%d, height&#61;(int)%d, ""format&#61;(string)NV12, framerate&#61;(fraction)%d/1 ! ""nvvidconv flip-method&#61;%d ! ""video/x-raw, width&#61;(int)%d, height&#61;(int)%d, format&#61;(string)BGRx ! ""videoconvert ! ""video/x-raw, format&#61;(string)BGR ! appsink"% (capture_width,capture_height,framerate,flip_method,display_width,display_height,))def show_camera():cap &#61; cv2.VideoCapture(gstreamer_pipeline(flip_method&#61;0), cv2.CAP_GSTREAMER)while cap.isOpened():flag, frame &#61; cap.read()frame_count &#61; cap.get(cv2.CAP_PROP_FPS)print(frame_count)w, h &#61; frame.shape[1::-1]ratio &#61; w / hh &#61; 150frame &#61; cv2.resize(frame, (int(h * ratio), h))points, encodeings &#61; face_encode(frame)frame_count &#61; cap.get(cv2.CAP_PROP_FPS)print(frame_count)for pts, encodeing in zip(points, encodeings):cv2.rectangle(frame, tuple((pts[1], pts[0])), tuple((pts[3], pts[2])), (0, 255, 0))face_distances &#61; face_recognition.face_distance(root_face, encodeing)if np.min(face_distances) <0.4:continuebest_match_index &#61; np.argmin(face_distances)str1 &#61; face_dict[&#39;{}&#39;.format(best_match_index)]cv2.putText(frame, str1, tuple((pts[1], pts[0])), cv2.FONT_HERSHEY_SIMPLEX, 1.2, (255, 255, 255), 2)cv2.imshow("windowName", frame)if cv2.waitKey(1) & 0xFF &#61;&#61; ord(&#39;q&#39;):breakk &#61; cv2.waitKey()if k &#61;&#61; 27:breakif cv2.getWindowProperty(&#39;windowName&#39;, cv2.WND_PROP_AUTOSIZE) <1:breakcap.release()cv2.destroyAllWindows()if __name__ &#61;&#61; "__main__":show_camera()


推荐阅读
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 基于Socket的多个客户端之间的聊天功能实现方法
    本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
author-avatar
国务二局
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有