乐趣区

关于python:Python人脸识别

明天来分享一下对于 Python 图片收缩和侵蚀、图片人脸识别以及动静人脸识别的代码~

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()

图片人脸识别

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

图片灰度化、几何变换、图像增强、归一化
特色点定位、人脸对齐、抓取人脸特色

“”” 人脸检测 ”””
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()

动静人脸识别

动静人脸识别是不须要停驻期待, 你只有呈现在肯定辨认范畴内, 无论你是行走还是停立, 零碎就会主动进行辨认, 也就是说, 人以天然的状态走过来, 摄像头会进行信息的抓拍和采集, 收回相应的指令, 进行动静人脸识别。

    首要是根据人脸器官的形态描述以及他们之间的距离个性来取得有助于人脸分类的特色数据,其特色分量个别蕴含特色点间的欧氏距离、曲率和视点等。
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()

以上就是本次分享的全部内容,当初想要学习编程的小伙伴欢送关注 Python 技术大本营,获取更多技能与教程。

退出移动版