python人脸识别防小偷_Python人脸识别

今天来分享一下关于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 原理详解参考

0x04 小结

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值