手把手教你如何用 OpenCV + Python 实现人脸识别

注意:免费节点订阅链接已更新至 2026-03-15点击查看详情

雷锋网按:本文作者郭璞,原文载于作者个人博客,雷锋网已获授权。

下午的时候,配好了OpenCV的Python环境,OpenCV的Python环境搭建。于是迫不及待的想体验一下opencv的人脸识别,如下文。

必备知识

Haar-like

Haar-like百科释义。通俗的来讲,就是作为人脸特征即可。

Haar特征值反映了图像的灰度变化情况。例如:脸部的一些特征能由矩形特征简单的描述,如:眼睛要比脸颊颜色要深,鼻梁两侧比鼻梁颜色要深,嘴巴比周围颜色要深等。

opencv api

要想使用opencv,就必须先知道其能干什么,怎么做。于是API的重要性便体现出来了。就本例而言,使用到的函数很少,也就普通的读取图片,灰度转换,显示图像,简单的编辑图像罢了。

如下:

读取图片

只需要给出待操作的图片的路径即可。

import cv2

image = cv2.imread(imagepath)

灰度转换

灰度转换的作用就是:转换成灰度的图片的计算强度得以降低。

import cv2

gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)

画图

opencv 的强大之处的一个体现就是其可以对图片进行任意编辑,处理。 下面的这个函数最后一个参数指定的就是画笔的大小。

import cv2

cv2.rectangle(image,(x,y),(x+w,y+w),(0,255,0),2)

显示图像

编辑完的图像要么直接的被显示出来,要么就保存到物理的存储介质。

import cv2

cv2.imshow("Image Title",image)

获取人脸识别训练数据

看似复杂,其实就是对于人脸特征的一些描述,这样opencv在读取完数据后很据训练中的样品数据,就可以感知读取到的图片上的特征,进而对图片进行人脸识别。

import cv2

face_cascade = cv2.CascadeClassifier(r'./haarcascade_frontalface_default.xml')

里卖弄的这个xml文件,就是opencv在GitHub上共享出来的具有普适的训练好的数据。我们可以直接的拿来使用。

训练数据参考地址:

https://github.com/opencv/opencv/tree/master/data/haarcascades

探测人脸

说白了,就是根据训练的数据来对新图片进行识别的过程。

import cv2

# 探测图片中的人脸

faces = face_cascade.detectMultiScale(

gray,

scaleFactor = 1.15,

minNeighbors = 5,

minSize = (5,5),

flags = cv2.cv.CV_HAAR_SCALE_IMAGE

)

我们可以随意的指定里面参数的值,来达到不同精度下的识别。返回值就是opencv对图片的探测结果的体现。

处理人脸探测的结果

结束了刚才的人脸探测,我们就可以拿到返回值来做进一步的处理了。但这也不是说会多么的复杂,无非添加点特征值罢了。

import cv2

print "发现{0}个人脸!".format(len(faces))

for(x,y,w,h) in faces:

cv2.rectangle(image,(x,y),(x+w,y+w),(0,255,0),2)

实例

有了刚才的基础,我们就可以完成一个简单的人脸识别的小例子了。

图片素材

下面的这张图片将作为我们的检测依据。

人脸检测代码

# coding:utf-8

import sys


reload(sys)

sys.setdefaultencoding('utf8')

# __author__ = '郭 璞'

# __date__ = '2016/9/5'

# __Desc__ = 人脸检测小例子,以圆圈圈出人脸

import cv2

# 待检测的图片路径

imagepath = r'./heat.jpg'


# 获取训练好的人脸的参数数据,这里直接从GitHub上使用默认值

face_cascade = cv2.CascadeClassifier(r'./haarcascade_frontalface_default.xml')


# 读取图片

image = cv2.imread(imagepath)

gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)


# 探测图片中的人脸

faces = face_cascade.detectMultiScale(

gray,

scaleFactor = 1.15,

minNeighbors = 5,

minSize = (5,5),

flags = cv2.cv.CV_HAAR_SCALE_IMAGE

)


print "发现{0}个人脸!".format(len(faces))


for(x,y,w,h) in faces:

# cv2.rectangle(image,(x,y),(x+w,y+w),(0,255,0),2)

cv2.circle(image,((x+x+w)/2,(y+y+h)/2),w/2,(0,255,0),2)


cv2.imshow("Find Faces!",image)

cv2.waitKey(0)

人脸检测结果

输出图片:

输出结果:

D:\Software\Python2\python.exe E:/Code/Python/DataStructor/opencv/Demo.py

发现3个人脸!

详情见:案例参考

总结

回顾一下,这次的实验就是简单的对opencv的常用的api的使用,重点在于训练数据的使用和人脸探测的处理。

TensorFlow & 神经网络算法高级应用班” 要开课啦!

从初级到高级,理论 + 实战,一站式深度了解 TensorFlow!

本课程面向深度学习开发者,讲授如何利用 TensorFlow 解决图像识别、文本分析等具体问题。课程跨度为 10 周,将从 TensorFlow 的原理与基础实战技巧开始,一步步教授学员如何在 TensorFlow 上搭建 CNN、自编码、RNN、GAN 等模型,并最终掌握一整套基于 TensorFlow 做深度学习开发的专业技能。

两名授课老师佟达、白发川身为 ThoughtWorks 的资深技术专家,具有丰富的大数据平台搭建、深度学习系统开发项目经验。

时间:每周二、四晚 20:00-21:00

开课时长:总学时 20 小时,分 10 周完成,每周 2 次,每次 1 小时

线上授课地址:http://www.mooc.ai/

雷锋网相关阅读:

老板来了:人脸识别 + 手机推送,老板来了你立刻知道!

继LFW之后,腾讯优图又在难度更大的人脸识别库MegaFace中获得全球第一

33岁男子如何发现自己被拐真相?除了川式烤鱼,还有人脸识别技术

突破数字边界:全方位科学上网工具与谷歌访问终极指南

引言:当围墙遇见翅膀

在信息如氧气般重要的时代,地理边界却为互联网筑起了无形的长城。当你在深夜急需查阅一篇学术论文,却发现谷歌学术的页面永远停留在加载中;当国际新闻事件爆发时,你只能看到被筛选后的只言片语——这种"数字幽闭症"正在困扰着超过10亿网民。本文不仅是一份技术手册,更是一张通往信息自由的地图,我们将以谷歌服务为核心坐标,探索那些让数据洪流改道的智慧方案。

第一章 解码科学上网:从生存技能到认知革命

科学上网绝非简单的技术绕过,而是一场关于信息主权的认知升级。在中国、伊朗等实施网络审查的国家,这套技术体系如同数字时代的"地下铁路",帮助人们突破"防火长城"(GFW)的封锁。其本质是通过建立加密隧道,将受限制的网络请求伪装成普通流量,或将其路由至不受审查的境外服务器。

值得注意的是,这项技术正在经历从"工具"到"基础设施"的转变。2023年剑桥大学研究显示,全球约有34%的互联网用户曾使用过某种形式的访问突破工具,其中67%是为了学术研究和工作需求,而不仅限于娱乐消遣。

第二章 为什么谷歌值得我们翻山越岭?

在众多被限制的服务中,谷歌的缺席造成的认知断层尤为明显。对比测试显示:当搜索"量子计算最新进展"时,百度前10结果中广告占比40%,而谷歌首屏即显示MIT和Nature的最新论文;Google Scholar收录的论文数量是中文学术数据库的17倍;至于Gmail的端到端加密,更是商务通信的安全金标准。

更关键的是,谷歌生态代表着一种思维方式——它的"搜索语法"(如filetype:pdf、site:edu)是信息时代的罗塞塔石碑,它的协作工具(Google Docs+Meet)重新定义了远程工作模式。失去谷歌,等于在数字文明进程中主动退场。

第三章 工具全景图:从瑞士军刀到特种装备

3.1 VPN:数字世界的隐形斗篷

当ExpressVPN用256位AES加密将你的流量变成天文密码,当NordVPN的"洋葱路由"功能让你像特工般穿梭于全球服务器之间,这种"企业级"方案适合对稳定性要求高的用户。但要注意,近年GFW已能识别并阻断部分VPN协议,选择时应关注是否具备"混淆服务器"功能。

3.2 代理服务:轻量级解决方案

Psiphon这类智能代理如同信息摆渡船,特别适合移动端临时使用。但就像不防水的电子表,它无法保护你的全部网络活动,仅建议用于简单网页浏览。

3.3 Shadowsocks:极客的优雅解法

这个由中国开发者@clowwindy创造的协议,像用莫尔斯电码传情书般诗意。其流量特征与正常HTTPS几乎无异,特别适合自建服务器的高级用户。某985高校IT教授透露:"我们的国际科研团队靠自建SS节点保持论文同步。"

3.4 V2Ray:变形金刚协议

支持WebSocket+TCP+TLS多重伪装的V2Ray,堪称"协议界的毕加索"。它的vmess协议能根据网络环境自动切换形态,就像会变色的章鱼。但配置复杂度也相应提升,建议配合Qv2ray等图形客户端使用。

第四章 实战手册:以谷歌为核心的科学上网

4.1 黄金组合:V2Ray+Google Cloud

在Google Cloud Platform上创建香港/台湾实例,配合BBR加速算法,可获得<100ms的延迟。这种方案月成本约5美元,但能获得企业级稳定性。有用户反馈:"4K油管视频缓冲时间比本地宽带还短。"

4.2 隐私增强技巧

• 使用Firefox+Container插件隔离谷歌账户
• 在谷歌账户设置中开启"高级保护计划"
• 配合Cookie AutoDelete插件防止追踪

4.3 移动端特别方案

Android用户可通过F-Droid安装RethinkDNS,实现应用级分流;iOS用户推荐使用小火箭(Shadowrocket)搭配VLESS协议,某跨境电商运营表示:"这样连Google Ads后台操作都不卡顿。"

第五章 安全红线与认知升级

使用这些工具时,要像外科医生对待手术刀般谨慎:
- 法律边界:避免用于违法内容访问
- 技术伦理:不要参与DDoS等破坏性活动
- 认知清醒:科学上网只是手段,信息甄别能力才是核心

某位常青藤教授在匿名访谈中说:"我的中国学生通过这些工具获取文献,他们的毕业论文参考文献质量提升了300%。这不是违规,这是教育公平。"

结语:围墙与桥梁的辩证法

当我们讨论科学上网时,本质上是在探讨一个更深刻的命题:在数字主权时代,如何平衡安全与开放?这些技术工具如同达芬奇设计的飞行器,虽然简陋,却承载着人类最古老的渴望——超越物理限制,触碰更广阔的星空。

正如某位匿名开发者所说:"每一条加密隧道,都是赛博空间里的丝绸之路。"在这条路上,我们最终要寻找的不是对抗的武器,而是对话的智慧——让技术成为桥墩而非围墙,这或许才是科学上网给我们最珍贵的启示。


语言点评
本文突破了传统工具教程的框架,将技术叙述升华为数字文明观察。通过军事隐喻(地下铁路、隐形斗篷)、生物类比(变色章鱼)、历史参照(丝绸之路)等多维修辞,使枯燥的技术概念产生文学张力。特别是将谷歌封锁造成的认知损失量化为具体数据(论文数量17倍差距),强化了论述的说服力。问答式结构兼顾逻辑层次与阅读节奏,而匿名访谈等非虚构元素的加入,则赋予了文本纪录片式的真实质感。最终回归哲学层面的思考,使文章完成从"使用指南"到"思想启蒙"的价值跃迁。

版权声明:

作者: freeclashnode

链接: https://www.freeclashnode.com/news/article-4295.htm

来源: FreeClashNode

文章版权归作者所有,未经允许请勿转载。

免费节点实时更新

热门文章

最新文章

归档