freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

99+
Python人脸识别
MoLing 2020-08-01 21:02:06 226016

今天来分享一下关于Python图片膨胀和腐蚀、图片人脸识别以及动态人脸识别的代码~~~开心呢,本菜鸟当时可是沉浸在cv2库中久久不能自拔了好久的呢~~希望你也能享受Python带来的小惊喜哟。。

0x 00 Python图片膨胀与腐蚀

图像的膨胀和腐蚀主要是寻找图像中的极大和极小区域。代码中的结构元素是指:设有两幅图象B,X。若X是被处理的对象,而B是用来处理X的,则称B为结构元素(structure element),又被形象地称做刷子。结构元素通常都是一些比较小的图象。详细的一些原理概念见文末链接啦~~

"""图片膨胀与腐蚀"""
import cv2
 
#读取图片:cv2.imread(路径,num)
img = cv2.imread("1.jpg",0)
 
#构造一个3*3的结构元素
elment = cv2.getStructuringElement(cv2.MORPH_RECT,(3,3))
 
#膨胀图像cv2.dilate(图像,元素结构)
dilate = cv2.dilate(img,elment)
 
#腐蚀图像cv2.erode(图像,元素结构)
erode = cv2.erode(img,elment)
 
#将两幅图像相减获得边,第一个参数是膨胀后的图像,第二个参数是腐蚀后的图像
result = cv2.absdiff(dilate,erode)
 
#阈值类型:'TERM_CRITERIA_COUNT', 'TERM_CRITERIA_EPS', 'TERM_CRITERIA_MAX_ITER',
# 'THRESH_BINARY', 'THRESH_BINARY_INV', 'THRESH_MASK', 'THRESH_OTSU',
# 'THRESH_TOZERO_INV', 'THRESH_TRIANGLE', 'THRESH_TRUNC'
retval,result = cv2.threshold(result,50,255,cv2.THRESH_BINARY);
 
#反色,即对二值图像每个像素取反
result = cv2.bitwise_not(result);
 
#显示图像
cv2.imshow('origin',img)
 
#原图
cv2.imshow('result',result)
 
#边缘检测图
cv2.waitKey(0)
cv2.destroyAllWindows()

0x01 图片人脸识别

    图片人脸识别分为以下几步:

  • 图片灰度化、几何变换、图像增强、归一化
  • 特征点定位、人脸对齐、抓取人脸特征
"""人脸检测"""
import  cv2
 
#调用人脸检测特征库
face = cv2.CascadeClassifier('haarcascade_frontalface_alt2.xml')
 
#读取图像文件
sample_imag = cv2.imread('1.jpg')
 
#人脸检测
faces = face.detectMultiScale(sample_imag,scaleFactor=1.1,minNeig hbors=5,minSize=(10,10))
 
#画框处理
for (x,y,w,h) in faces:
    cv2.rectangle(sample_imag,(x,y),(x+w,y+h),(0,255,0),2)
 
#结果写入图像
cv2.imwrite('face.jpg',sample_imag)
print("detect success")
 
#新建窗口显示图像
cv2.namedWindow("Image")
cv2.imshow("Image",sample_imag)
cv2.waitKey(0)
cv2.destroyAllWindows()

展示一下识别我詹皇:帅

还有识别勇士的时候:(不会吧不会吧,竟然没识别到~~我去学习训库了)

0x02 动态人脸识别

        动态人脸识别是不需要停驻等待,你只要出现在一定识别范围内,无论你是行走还是停立,系统就会自动进行识别,也就是说,人以自然的形态走过去,摄像头会进行信息的抓拍和采集,发出相应的指令,进行动态人脸识别。
        首要是依据人脸器官的形状描绘以及他们之间的间隔特性来获得有助于人脸分类的特征数据,其特征重量一般包含特征点间的欧氏间隔、曲率和视点等。
import cv2
# 1.使用OpenCV的分类器
# 2.从摄像头或本地中读取照片
# 3.在图片上换框
# 4.在新窗口上展示图片
 
# 1.使用OpenCV的分类器/特征库
detector = cv2.CascadeClassifier('haarcascade_frontalface_alt2.xml')
# 2.从摄像头或本地中读取照片
cap = cv2.VideoCapture(0)
while True:
    ret,img = cap.read()
    faces = detector.detectMultiScale(img,1.3,5)
    # 3.在图片上换框
    for (x,y,w,h) in faces:
        cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)
    cv2.imshow('frame',img)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
# 4.在新窗口上展示图片
cap.release()
cv2.destroyAllWindows()

0x03 原理详解参考

图片的腐蚀与膨胀:https://blog.csdn.net/zqx951102/article/details/82997588

https://blog.csdn.net/weixin_39128119/article/details/84172385

人脸识别原理(内含PPT):https://blog.csdn.net/weixin_42346564/article/details/82500454

动态人脸识别:https://blog.csdn.net/dedsaa/article/details/94173130

0x04 小结

当时学习这个的时候超级Happy的,就是那种长见识的那种感觉,眼里放着光的那种~~学Python,真快乐呢。。。希望你也能从代码中获得乐趣,呐,以下是那个人脸识别库的xml网址,下载来试试,识别一下你会超快乐的哟。。(下面链接失效请私信我发给你)

链接:https://pan.baidu.com/s/1pnF5vQqBCiKkyXl7rlZfiA 密码:0o0p

# python # 人脸识别 # Python实战
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 MoLing 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
python
MoLing LV.2
尸体复活术,开始找工作
  • 9 文章数
  • 114 关注者
Apche Solr 未授权上传漏洞(CVE-2020-13957)复现
2021-01-22
Everything后渗透的利用
2021-01-22
渗透小白的面试之路
2020-12-02
文章目录