深圳网站建设 网站设计/天津优化网络公司的建议

深圳网站建设 网站设计,天津优化网络公司的建议,代做毕业设计网站现成,国内做轮胎网站这次我们继续解读代码,我们主要来看下面两个部分; 至于人脸识别成功的要点我们在最后总结~ 具体代码学习: #定义人脸名称 def name():#预学习照片存放位置path M:/python/workspace/PythonProject/face/imagePaths[os.path.join(path,f) f…

这次我们继续解读代码,我们主要来看下面两个部分;

至于人脸识别成功的要点我们在最后总结~

具体代码学习:

#定义人脸名称
def name():#预学习照片存放位置path = 'M:/python/workspace/PythonProject/face/'imagePaths=[os.path.join(path,f) for f in os.listdir(path)]for imagePath in imagePaths:name = str(os.path.split(imagePath)[1].split('.',2)[1])names.append(name)

(1)os.path.join()协调文件路径中'/'   '\'差异

     将多个路径组件智能地拼接成一个完整的路径。由于不同操作系统的差异,os.path.join() 可以根据当前操作系统自动处理这些差异。

补充:不同操作系统使用不同的路径分隔符。

           Windows 使用反斜杠 \,Unix/Linux 和 macOS 使用正斜杠 /

#举例:
import os# 拼接路径
path = os.path.join('home', 'user', 'documents')
print(path)
  • 在 Windows 系统上,输出可能是 home\user\documents
  • 在 Unix/Linux 或 macOS 系统上,输出为 home/user/documents

(2)os.listdir()输出某目录下所有文件名

即os.listdir(path)获得了['1.lss.jpg', '2.lss.jpg']

os.path.join()将路径M:\python\workspace\PythonProject\face替换为

M:/python/workspace/PythonProject/face/1.lss.jpg

M:/python/workspace/PythonProject/face/2.lss.jpg

  • os.path.join(path, f)这里path 是前面指定的目录路径,fos.listdir(path) 返回列表中的每个元素(即文件或文件夹名称)。
  • 代码比较长,我们来看一下这个循环的内容:

      这行代码遍历 os.listdir(path) 返回的列表,对每个文件名 调用 os.path.join(path, f) 进行路径拼接,最终将所有拼接好的完整路径组成一个新的列表。

    我们可以把整段代码的阅读顺序做如下表达:

让我们继续解读:

  for imagePath in imagePaths:name = str(os.path.split(imagePath)[1].split('.',2)[1])names.append(name) 

for imagePath in imagePaths是在刚形成的imagePath列表里自己进行循环

(3)os.path.split()将一个文件路径拆分为目录部分和文件名部分。

  • 通过上一个代码我们获取了imagePath=M:/python/workspace/PythonProject/face/1.lss.jpg
  • os.path.split(imagePath)就是把M:/python/workspace/PythonProject/face/1.lss.jpg拆为:
  • 文件目录M:/python/workspace/PythonProject/face/
  • 文件名1.lss.jpg

os.path.split(imagePath)[1]是从文件目录和文件名中获取第二个文件名,即1.lss.jpg

补充:这里的第二个元素是因为列表、元组和字符串的索引都是从 0 开始,即[0]代表首位,[1]代表第二个,以此类推。

(4)split() 将字符串按照指定的分隔符分割成多个子字符串,并返回一个包含这些子字符串的列表

str.split(sep=None, maxsplit=-1)
  • sep:可选参数,指定分隔符。如果不提供该参数,默认使用空白字符(空格、制表符、换行符等)作为分隔符。
  • maxsplit:可选参数,指定最大分割次数。如果不提供该参数,表示不限制分割次数。

  • split('.', 2)的含义就是分隔符为 . 最多分隔2次。

  • '1.lss.jpg' 调用 split( ) 后,会得到列表 ['1', 'lss', 'jpg']

  • split('.',2)[1]这里从文件名1.lss.jpg中取出第二个元素,即lss

整行代码解读为:

(5)append()在列表的末尾添加一个新元素

list.append(object)
  • list:表示要操作的列表对象。
  • object:表示要添加到列表末尾的任意 Python 对象,比如字符串、整数、列表、元组等。

names.append(name)这里就是把开头创建的names列表填进了内容name

解读主函数:

内容我们都学过,就直接标注了

#打开视频test3.mp4读取每一帧
cap=cv2.VideoCapture('test3.mp4')
#调用自定义name函数
name()
while True:#读取视频里的帧flag,frame=cap.read()#如果没有帧则中断if not flag:break#调用自定义face_detect_demo函数,进行人脸识别和标注face_detect_demo(frame)if ord(' ') == cv2.waitKey(10):break

 (5)全部代码解读为:

import cv2
#导入与操作系统交互 os 模块
import os#创建一个 LBPH(局部二值模式直方图)人脸识别器对象,用于训练和识别人脸。
recogizer=cv2.face.LBPHFaceRecognizer_create()
#读取训练好的人脸识别模型yml文件
recogizer.read('M:/python/workspace/PythonProject/trainer/trainer.yml')
#初始化一个空列表names,用于存储人脸对应的名称。
names=[]
#初始化一个全局变量warningtime,用于记录未知人脸出现的次数。
warningtime = 1#自定义人脸识别
def face_detect_demo(img):#彩图转化为灰图gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#调用人脸识别分类器face_detector=cv2.CascadeClassifier('M:/python/pythoninstall/Lib/site-packages/cv2/data/haarcascade_frontalface_alt.xml')#灰图中检测人脸face=face_detector.detectMultiScale(gray)for x,y,w,h in face:#原彩图中用红色矩形框人脸cv2.rectangle(img,(x,y),(x+w,y+h),color=(0,0,255),thickness=2)#人脸中心画绿圆cv2.circle(img,center=(x+w//2,y+h//2),radius=w//2,color=(0,255,0),thickness=1)#识别输入人脸,获取标签ids,置信度confidenceids, confidence = recogizer.predict(gray[y:y + h, x:x + w])#如果置信度confidence>80if confidence > 80:#warningtime作为全局变量global warningtime#每次出现都+1warningtime += 1#控制台输出warningtime=,值为warningtimeprint('warningtime=',warningtime)#图像上绘制文本,文本是unknown,位置是x向右偏移10个像素。y向上偏移10个像素,字体无衬线,字体大小0.75,绿色cv2.putText(img, 'unknown', (x + 10, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 255, 0), 1)else:#图像上绘制文本,文本是names列表中的,其余同上#坐标移动规律:+ 号撒腿右下跑,- 号转身左上飘cv2.putText(img,str(names[ids - 1]), (x + 10, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 255, 0), 1)#弹出窗口名为resultcv2.imshow('result',img)#定义人脸名称
def name():#预学习照片存放位置path = 'M:/python/workspace/PythonProject/face/'#获取path路径下文件名,将文件名+路径拼接完整路径,将完整路径存到imagePaths中imagePaths=[os.path.join(path,f) for f in os.listdir(path)]for imagePath in imagePaths:#获取文件名中的一部分作为name,即name=lssname = str(os.path.split(imagePath)[1].split('.',2)[1])#将提取出的人脸名称 name 添加到 names 列表中names.append(name)#打开视频test3.mp4读取每一帧
cap=cv2.VideoCapture('test3.mp4')
#调用自定义name函数
name()
while True:#读取视频里的帧flag,frame=cap.read()#如果没有帧则中断if not flag:break#调用自定义face_detect_demo函数,进行人脸识别和标注face_detect_demo(frame)if ord(' ') == cv2.waitKey(10):breakcv2.destroyAllWindows()
cap.release()
print(names)

(6)人脸识别成功的要点

   本次识别我们用两张人像即实现了人脸识别,这有赖于LBPH分类器的局部特征特性,少量图片即可识别。同时在素材选择中刻意选择了差异较大的人物,且目标人像的角度基本一致而检测任务则为其他角度。如果想提升识别准确性目前我所了解的一个是提升训练样本量,更改分类器或者用其他方式进行识别。在实验中我尝试了用130多张图用LBPH分类器,但训练效果不佳。所以目前的成果对于材料的选择有较高的要求。

(7)补充[]和()的区别

  1. 方括号 [] 用于表示列表(list)。列表是一种可变的、有序的数据集合,列表支持元素的添加、删除、修改等操作
  2. 方括号 [] 用于索引和切片操作
my_list = [1, 'apple', True]my_list = [1, 2, 3, 4, 5]
# 索引操作,获取第一个元素
first_element = my_list[0]# 切片操作,获取第 2 到第 4 个元素
sub_list = my_list[1:4]
print(sub_list)  # 输出: [2, 3, 4]my_tuple = (1, 2, 3, 4, 5)
# 元组的索引操作
first_tuple_element = my_tuple[0]
print(first_tuple_element)  # 输出: 1squares = [i**2 for i in range(1, 6)]
  1. 圆括号 () 用于表示元组(tuple)。元组是一种不可变的、有序的数据集合,一旦创建就不能修改其元素
  2. 圆括号 () 用于函数调用。调用函数时,需要使用圆括号将参数括起来。如果函数不需要参数,也需要使用空的圆括号。
my_tuple = (1, 'apple', True)def greet(name):def say_hi():

综上大部分情况都使用圆括号()

(8)总结

  • os.path.join()协调文件路径中/\差异
  • os.listdir()输出某目录下所有文件名
  • os.path.split()将一个文件路径拆分为目录部分和文件名部分
  • split() 将字符串按照指定的分隔符分割成多个子字符串,并返回一个包含这些子字符串的列表
  • append()在列表的末尾添加一个新元素

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

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

相关文章

LabVIEW太阳能制冷监控系统

在全球能源需求日益增长的背景下,太阳能作为一种无限再生能源,被广泛应用于各种能源系统中。本基于LabVIEW软件和STM32F105控制器的太阳能制冷监控系统的设计与实现,提供一个高效、经济的太阳能利用方案,以应对能源消耗的挑战。 项…

AIGC图生视频保姆级教程

一、AI文生图高阶技巧 推荐工具 ▸ MidJourney(艺术感最强) ▸ DALLE 3(与ChatGPT深度联动) ▸ Leonardo.ai(精细化参数控制) 核心策略 提示词架构: [主体描述][环境氛围][镜头语言][风格参数…

嵌入式EasyRTC实时通话支持海思hi3516cv610,编译器arm-v01c02-linux-musleabi-gcc

EasyRTC已经完美支持海思hi3516cv610,编译器arm-v01c02-linux-musleabi-gcc,总体SDK大小控制在680K以内(预计还能压缩100K上下): EasyRTC在hi3516cv610芯片上能双向通话、发送文字以及二进制指令,总体运行…

力扣做题记录 (二叉树)

二叉树 打算先来了解二叉树基础,都是简单题,目的是熟悉代码格式和解题基础思路。 1、二叉树最大深度 二叉树最大深度 方法一、深度搜索 直接用原函数做递归,比较简单 /*** Definition for a binary tree node.* struct TreeNode {* …

如何下载Qt和运行第一个程序。

Ubuntu24.04 下载比较容易,基本都是无脑操作。途中汇出现有个别package下载不成功的情况,重新下载即可。 文章目录 下载qt运行qt第一个项目 下载qt 1.先找到官网,点击Download。 2.然后选择,community User 3.然后会跳转到这个…

HCIA项目实践--静态路由的拓展配置

7.7 静态路由的拓展配置 网络中的两个重要思想: (1) 实的不行来虚的; (2) 范围太大,划分范围。(分治) 7.7.1 负载均衡 (1)定义 负载均衡是一种网…

基于51单片机的的鸡笼补光和恒温系统的设计与实现(源程序+Protues仿真+电路图+元件清单+器件手册)

编号:71 基于51单片机的的鸡笼补光和恒温系统的设计与实现 功能描述: 本设计由89C52单片机液晶12864显示模块声光报警电路温湿度传感器电路风扇电路LED照明电路光照检测电路GSM电路DS1302时钟电路 1.实现的功能 (1)采用DHT11温湿传感器、光敏电阻捕捉…

Spring——Spring开发实战经验(1)

摘要 文章主要介绍了 Swagger 作为 API 文档生成和测试工具的功能,包括自动生成 API 文档、提供可视化调试界面、促进前后端协作、支持 OpenAPI 规范等。同时,还提及了 Spring Boot 与 Swagger3 的实战应用,以及 Spring 开发中其他相关技术内…

SAP-ABAP:SAP的Screen Layout Designer屏幕布局设计器详解及示例

在SAP中,Screen Layout Designer(屏幕布局设计器)是用于设计和维护屏幕(Dynpro)布局的工具。通过Screen Layout Designer,您可以创建和修改屏幕元素(如输入字段、按钮、文本、表格控件等&#x…

安全筑基,智能赋能:BeeWorks IM引领企业协同新纪元

在数字经济高速发展的今天,企业通讯系统已从单纯的信息传递工具演变为支撑业务创新的核心平台。传统通讯工具在安全性、智能化、协同性等方面的不足,严重制约着企业的数字化转型进程。BeeWorks IM系统以其创新的技术架构和智能化功能,正在重新…

SpringBoot实战:高效获取视频资源

文章目录 前言技术实现SpringBoot项目构建产品选取配置数据采集 号外号外 前言 在短视频行业高速发展的背景下,海量内容数据日益增长,每天都有新的视频、评论、点赞、分享等数据涌现。如何高效、精准地获取并处理这些庞大的数据,已成为各大平…

【IoTDB 线上小课 11】为什么 DeepSeek 要选择开源?

新年新气象,【IoTDB 视频小课】第十一期全新来临! 关于 IoTDB,关于物联网,关于时序数据库,关于开源... 一个问题重点,3-5 分钟,我们讲给你听: 开源“加成”再次展现! 现在…

. Unable to find a @SpringBootConfiguration(默认软件包中的 Spring Boot 应用程序)

解决: 新建一个包即可 问题: 默认软件包中的 Spring Boot 应用程序。 原因: 默认包的定义 : 如果一个 Java 类没有使用 package 声明包名,则该类会被放置在默认包中。Spring Boot 遵循 Java 的包管理约定&#xff…

渗透利器:YAKIT 工具-基础实战教程.

YAKIT 工具-基础实战教程. YAKIT(Yak Integrated Toolkit)是一款基于Yak语言开发的集成化网络安全单兵工具,旨在覆盖渗透测试全流程,提供从信息收集、漏洞扫描到攻击实施的自动化支持。其核心目标是通过GUI界面降低Yak语言的使用…

CRISPR spacers数据库;CRT和PILER-CR用于MAGs的spacers搜索

iPHoP:病毒宿主预测-CSDN博客 之前介绍了这个方法来预测病毒宿主,今天来介绍另一种比较用的多的方法CRISPR比对 CRISPR spacers数据库 Dash 在这可以下载作者搜集的spacers用于后期比对 CRT和PILER-CR 使用 CRT 和 PILERCR 识别 CRISPR 间隔区&#x…

DeepSeek从入门到精通:提示词设计的系统化指南

目录 引言:AIGC时代的核心竞争力 第一部分 基础篇:提示词的本质与核心结构 1.1 什么是提示词? 1.2 提示词的黄金三角结构 第二部分 类型篇:提示词的六大范式 2.1 提示语的本质特征 2.2 提示语的类型 2.2.1 指令型提示词 …

【EDA学习】嘉立创题库

一、多选题 1.嘉立创题库的作用是什么,以下描述正确的是? A.提供学习平台,帮助客户了解嘉立创工艺 B.可成为嘉立创客户所在企业的内部培训资料,打通设计与制造,提高产品研发效率,降本增效 C.可成为嘉立创客…

Python PyCharm DeepSeek接入

Python PyCharm DeepSeek接入 创建API key 首先进入DeepSeek官网,https://www.deepseek.com/ 点击左侧“API Keys”,创建API key,输出名称为“AI” 点击“创建",将API key保存,复制在其它地方。 在PyCharm中下…

【Pico】使用Pico进行无线串流搜索不到电脑

使用Pico进行无线串流搜索不到电脑 官串方式:使用Pico互联连接电脑。 故障排查 以下来自官方文档 请按照以下步骡排除故障: 确认电脑和一体机连接了相同的路由器WiFi网络(相同网段) IP地址通常为192.168.XX,若两设备的IP地址前三段相同&…

[免费]Springboot+Vue医疗(医院)挂号管理系统【论文+源码+SQL脚本】

大家好,我是java1234_小锋老师,看到一个不错的SpringbootVue医疗(医院)挂号管理系统,分享下哈。 项目视频演示 【免费】SpringBootVue医疗(医院)挂号管理系统 Java毕业设计_哔哩哔哩_bilibili 项目介绍 在如今社会上,关于信息上…