手把手教你如何用 OpenCV + Python 实现人脸识别
雷锋网按:本文作者郭璞,原文载于作者个人博客,雷锋网已获授权。
下午的时候,配好了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
文章版权归作者所有,未经允许请勿转载。
热门文章
- 2月22日免费节点分享|21.4M/S,V2ray节点/Clash节点/Singbox节点/SSR节点|免费上网梯子每天更新
- 2月25日免费节点分享|19.8M/S,Clash节点/V2ray节点/Singbox节点/SSR节点|免费上网梯子每天更新
- 3月1日免费节点分享|19.9M/S,V2ray节点/SSR节点/Singbox节点/Clash节点|免费上网梯子每天更新
- 2月24日免费节点分享|20.1M/S,Singbox节点/Clash节点/V2ray节点/Shadowrocket节点|免费上网梯子每天更新
- 2月27日免费节点分享|19.1M/S,V2ray节点/Clash节点/Shadowrocket节点/Singbox节点|免费上网梯子每天更新
- 2月23日免费节点分享|20M/S,V2ray节点/SSR节点/Singbox节点/Clash节点|免费上网梯子每天更新
- 2月28日免费节点分享|19.6M/S,SSR节点/Clash节点/Singbox节点/V2ray节点|免费上网梯子每天更新
- 2月26日免费节点分享|21.8M/S,V2ray节点/SSR节点/Singbox节点/Clash节点|免费上网梯子每天更新
- 3月2日免费节点分享|21.6M/S,Singbox节点/SSR节点/V2ray节点/Clash节点|免费上网梯子每天更新
- 3月3日免费节点分享|18.6M/S,V2ray节点/Clash节点/Singbox节点/Shadowrocket节点|免费上网梯子每天更新
最新文章
- 3月15日免费节点分享|18.2M/S,Shadowrocket节点/Clash节点/V2ray节点/Singbox节点|免费上网梯子每天更新
- 3月14日免费节点分享|22.4M/S,Singbox节点/V2ray节点/Clash节点/SSR节点|免费上网梯子每天更新
- 3月13日免费节点分享|22.2M/S,V2ray节点/SSR节点/Clash节点/Singbox节点|免费上网梯子每天更新
- 3月12日免费节点分享|20.7M/S,Singbox节点/V2ray节点/Clash节点/Shadowrocket节点|免费上网梯子每天更新
- 3月11日免费节点分享|18.6M/S,SSR节点/Clash节点/V2ray节点/Singbox节点|免费上网梯子每天更新
- 3月10日免费节点分享|18.2M/S,SSR节点/Clash节点/Singbox节点/V2ray节点|免费上网梯子每天更新
- 3月9日免费节点分享|18.9M/S,Singbox节点/Clash节点/SSR节点/V2ray节点|免费上网梯子每天更新
- 3月8日免费节点分享|18.5M/S,Clash节点/SSR节点/Singbox节点/V2ray节点|免费上网梯子每天更新
- 3月7日免费节点分享|19.2M/S,Clash节点/Singbox节点/V2ray节点/Shadowrocket节点|免费上网梯子每天更新
- 3月6日免费节点分享|21.4M/S,Singbox节点/Shadowrocket节点/V2ray节点/Clash节点|免费上网梯子每天更新
归档
- 2026-03 29
- 2026-02 52
- 2026-01 56
- 2025-12 59
- 2025-11 55
- 2025-10 56
- 2025-09 55
- 2025-08 49
- 2025-07 31
- 2025-06 30
- 2025-05 31
- 2025-04 30
- 2025-03 388
- 2025-02 360
- 2025-01 403
- 2024-12 403
- 2024-11 390
- 2024-10 403
- 2024-09 388
- 2024-08 402
- 2024-07 427
- 2024-06 442
- 2024-05 181
- 2024-04 33
- 2024-03 31
- 2024-02 29
- 2024-01 51
- 2023-12 52
- 2023-11 32
- 2023-10 32
- 2023-09 3