【Python】初学者也可以实现的人脸识别系统-0x1

article/2025/10/2 8:19:16
  • 作者:20岁爱吃必胜客(坤制作人),近十年开发经验, 跨域学习者,目前于海外某世界知名高校就读计算机相关专业。
  • 荣誉:阿里云博客专家认证、腾讯开发者社区优质创作者,在CTF省赛校赛多次取得好成绩。
  • 跨领域学习,喜欢摄影、弹吉他、咏春拳。文章深入浅出、语言风趣;爱吃必胜客社区创立者,旨在“发现美 欣赏美

  • 🏆 学习系列专栏
    。🏅 Python学习宝库
    。🏅 网络安全学习宝库

在这里插入图片描述

在这里插入图片描述

文章目录

  • ⭐️前言
    • 🌟 做什么
    • 🌟 准备
      • ☀️安装python,毫无疑问
      • ☀️安装pycharm
      • ☀️环境:Opencv模块
    • 注意事项:
  • ⭐️做法
    • 🌟 原理
    • 🌟 第一步:读取图片
      • ☀️步骤
      • ☀️代码
    • 🌟 第二步:灰度转换
      • ☀️为什么进行灰度转换?
      • ☀️步骤
      • ☀️代码
  • ⭐️总结
    • 🌟 一个故事

⭐️前言

人脸识别那么常用,为什么不自己手写一个呢?

日常生活中我们喜欢的就可以拿python写出来了,不要放弃,python很简单,很多时候我们可以先调用别人的API实现出来。

🌟 做什么

人脸识别拿来做个门禁系统、考勤系统、报警系统。

🌟 准备

☀️安装python,毫无疑问

https://www.python.org/
复制此链接到浏览器,下载安装吧!

☀️安装pycharm

这个是个付费软件,非常好用。
但是我们可以去pdd搜索pycharm安装,这样就可以几分钱安装永久免费版了。

☀️环境:Opencv模块

我们可以先下载丐版的用着,丐版下载也很容易,直接打开cmd,输入即可下载

自带乞丐版安装方法
在这里插入图片描述
满血版在官网下载opencv
毫无疑问,功能更全面。
在这里插入图片描述

注意事项:

安装的时候是 opencv_python,但在导入的时候采用 import cv2

# 导入cv模块
import cv2 as cv

⭐️做法

🌟 原理

  • 滑动窗口机制
  • 级联分类器
  • 特征分类器

别看了,太麻烦了,我们就写个人脸识别至于吗?
我们就先用上再说,光简单介绍一下意图让大家明白就够了,我觉得。

🌟 第一步:读取图片

当然要先读取到图片才能去处理图片,所以万事第一步,先读取到我们的图片。

☀️步骤

  1. 导入cv模块
  2. 读取图片
  3. 显示图片
  4. 等待一小下,不然图片一闪而过
  5. 释放内存
    在这里插入图片描述

☀️代码

创建个文件,打上这些代码。不会的看上图。

# 导入cv模块
import cv2 as cv
# 读取图片
img = cv.imread("5a131e6fcaf97e615aeaef854cabf65.jpg")
# 显示图片
cv.imshow("read_img",img)
# 等待一小下,不然图片一闪而过
cv.waitKey(0)
# 释放内存
cv.destroyAllWindows()

🌟 第二步:灰度转换

在这里插入图片描述

☀️为什么进行灰度转换?

毫无疑问,彩色电视确实更好看,但是也难造啊。我们造不了彩电的时候,先做成黑白电视。
我们现在人工智能很厉害,但是还没进化到大彩电级别。我们先从黑白电视开始,黑白的图片数据更好处理啊
你说对吗?
我觉得OK。

☀️步骤

大公司给我们写好了,一个调用搞定。
我们有opencv这个工具怕什么,嘿嘿。

☀️代码

cv.cvtColor(img,cv.COLOR_BGR2GRAY)这个函数直接搞定

# 导入cv模块
import cv2 as cv
# 读取图片
img = cv.imread("5a131e6fcaf97e615aeaef854cabf65.jpg")# 灰度转换
gray_img=cv.cvtColor(img,cv.COLOR_BGR2GRAY)
# 显示灰度
cv.imshow('gray',gray_img)
#保存灰度图片
cv.imwrite('gray_face11.jpg',img)
# 显示图片
cv.imshow("read_img",img)
# 等待一小下,不然图片一闪而过
cv.waitKey(0)
# 释放内存
cv.destroyAllWindows()

⭐️总结

这些就是我们要做一个人脸识别的前期工作。

要把数据尽量地裁剪、简化。
方便计算机处理。

我们让程序可以读取图片,把彩的图片转成黑白的,尺寸标准化

下一篇开始,我们让我们的程序可以干活,可以人脸检测!

跟上坤哥的节奏!

🌟 一个故事

python学习之路任重而道远,要想学完说容易也容易,说难也难。 很多人说python最好学了,但扪心自问,你会用python做什么了?
刚开始在大学学习c语言,写一个飞行棋的小游戏,用dos界面来做,真是出力不讨好。 地图要自己一点一点画出来,就像这样:

================
|				|
|				|
|===============
从此讨厌编程,不想继续学下去。每次作业应付。
算法考试,数据结构考试随便背代码,只求通过。
最后呢?我学会变成了吗?只能对一些概念侃侃而谈,但真的会几行代码,能写出实用工具吗?
答案变得模糊。
所以我们要从现在开始,学好python,不要再糊弄下去!!!

在这里插入图片描述


http://chatgpt.dhexx.cn/article/9Wi1B4rL.shtml

相关文章

解决windows服务器上定时任务执行时报0x1错误,但是手动执行顺利完成

最近修改定时任务重新部署后,定时运行后运行结果为0x1,但是手动执行后,任务可以顺利完成。 windows官网解释如下: 0x0: 操作已成功完成 0x1: 调用的函数不正确或调用了未知函数。 因为手动可以执行&…

Windows定时执行.py文件报(0x1)错

Windows定时执行.py文件报(0x1)错 按照博客https://blog.csdn.net/David_jiahuan/article/details/99960427,创建定时任务后报错(0x1)如下图,在终端里运行py文件正常,排除代码问题。 在网上查资料,有因为是…

Windows计划任务出现0x1错误结果

Windows计划任务出现0x1错误结果 现象解决方法结果 现象 参考不少的文章,基本上都是说因为权限的问题,但试了N次都不行,仍然报0x1的错误结果,亲测解决方法说明如下; 1.脚本本身没问题,手动本地可以执行; 2…

JAVA关于基本数据类型之间进行强制转换底层剖析

1.什么是基本类型之间的强制转换 先来聊一聊基本类型 基本数据类型所占用的字节数表示数的范围整型byte1-128~127short2-32768~32767int4-2147483648~2147483647long8比int大浮点型float4 比long大double8比float大字符型char2布尔型boolean 基本类型之间的强制转换…

关于Java中强制转换类型为接口类型

在这里浅浅记录一下自己在Java编程中遇到的问题及理解: 问题背景如下: 自定义JDBC接口: 自定义类MySql实现JDBC接口: 创建JDBC01.properties配置文件如下: key为类名,value为创建Class对象所需类的路径全…

java强制double类型转换int()

写着写着,就又忘了…… 做个实验,存一下吧: 代码: // a litte testdouble asdjf 39.8;double asdjr 39.5;double asdjv 40.1;System.out.println("\nint():");System.out.println("(int)(39.8)" (int) …

java的隐式转换和强制类型转换

一、数据类型转换的场景 当数据类型不一致时进行算术运算操作,需要进行类型转换(转成一样的)操作。 二、数据类型转换的分类 1.隐式转换 1.取值范围小的转成取值范围大的。 如int转成double 2.byte、short、char类型在进行数据类型转换的…

getdate、dateadd、datediff、datename、datepart关于日期函数的用法及理解

下面是sql server实例: select GETDATE() --getdate这个函数是获取当前系统时间也就是今天的日期时间、看第1个结果select DATEADD(YY,1,GETDATE()) --dateadd这个函数是增加日期、框里mm是月份、1是增加1个月、就是说在今天的日期上再加1个月--对比一下第1个结果…

DATEDIFF() 函数

定义和用法 DATEDIFF() 函数返回两个日期之间的时间。 语法 DATEDIFF(datepart,startdate,enddate)startdate 和 enddate 参数是合法的日期表达式。 datepart 参数可以是下列的值: 实例 例子 1 使用如下 SELECT 语句: SELECT DATEDIFF(day,2008-12-2…

SQL server Date函数之DATEPART()函数

1、定义: DATEPART() 函数用于返回一个日期或者时间的单独部分,比如年、月、日、小时、分钟等等。 2、语法: DATEPART(datepart,date) date 参数是合法的日期表达式。datepart 参数可以是下列的值: datepart缩写年yy, yyyy季…

DatePart 函数

DatePart 函数 适用于: Microsoft Office Access 2007 全部显示 全部隐藏 返回变量型(整型),其中包含给定日期的指定部分。 语法 DatePart(interval, date [, firstdayofweek] [, firstweekofyear] ) DatePart 函数的语法包含以下参数 &…

DateAdd函数

在VBA日期时间函数学习中&#xff0c;有几类用到了间隔类型参数&#xff0c;比如 日期/时间增加或减少一个时间间隔&#xff1a;DateAdd(<间隔类型>,<间隔值>,<表达式>) 计算两个日期的间隔值函数&#xff1a; DateDiff(<间隔…

Linux 题库及答案永久开放共同学习进步

Linux 题库&#xff08; 一 ) 一、选择题 (每小题2分&#xff0c;共50分) 4. 下面哪个命令是用来定义shell的全局变量( D ) A. exportfs B. alias C. exports D. export 11. 在vi编辑器里&#xff0c;命令"dd"用来删除当前的( A ) A. 行 B. 变量   C. 字  …

Linux内核设计与实现 Robert Love

第一章 Linux内核简介 通常一个内核由负责响应中断的中断服务程序&#xff0c;负责管理多个进程从而分享处理器时间的调度程序&#xff0c;负责管理进程地址空间的内存管理程序和网络、进程间通信等系统服务程序共同组成。 每个处理器在任何指定时间点上的活动必然概况为下列三…

linux下查询汇编指令手册,Linux命令大全

awk是一种编程语言&#xff0c;用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件&#xff0c;或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能&#xff0c;是linux/unix下的一个强大编程工具。它在命令行中使用&#…

Linux文本处理三剑客(grep,sed,awk)

文章目录 快捷键Shell通配符*通配符? 通配符[] 通配符 正则表达式grep&#xff08;文本过滤&#xff09;sed&#xff08;文本编辑&#xff09;替换文本内容(sed -i "s/原内容/替换内容/g" file.filetype) awk&#xff08;文本统计&#xff09;awk文本操作( awk [选项…

Linux命令教程第三期

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言awk补充说明语法形式模式示例其他语句数组的定义 col补充说明语法选项 comm补充说明语法选项参数 csplit补充说明语法选项参数实例 ed补充说明语法选项参数 egr…

Linux 私房菜 笔记(完结)

目录 第0章 计算机概论 基本知识 操作系统&#xff1a; 内核功能&#xff1a; 应用程序&#xff1a; 第一章 什么是LINUX 第0章 计算机概论 基本知识 电脑主要由五大单元组成&#xff1a; 输入单元&#xff0c;输出单元&#xff0c;cpu内部的控制单元&#xff0c;算数逻辑…

【Linux】内存管理机制

Linux内存管理机制 内存的表象层次依次为 逻辑地址------>线性地址----->物理地址 逻辑地址经过段机制转换成线性地址。 线性地址经过页机制转换成物理地址。 Linux将所有程序的段地址定为 0 - 4G&#xff08;Linux中&#xff09;&#xff0c;所有虽然逻辑地址和线性…

Linux操作系统基础知识

〇、操作系统基础 1、什么是操作系统 操作系统(Operating System, OS)&#xff0c;介于硬件资源和应⽤程序之间的⼀个系统软件。 2、操作系统的功能 操作系统位于硬件资源之上&#xff0c;管理硬件资源&#xff1b;应⽤程序之下&#xff0c;为应⽤程序提供服务&#xff0c;同…