栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

数营lyc python第二次博客作业

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数营lyc python第二次博客作业

首先安装opencv库,通过代码:pip install opencv-python 进行安装。

第二步要找到cv2的文件夹,这里建议和前期准备人脸识别的图片和py文件放在一个文件夹内

然后开始编写代码

import cv2
import matplotlib.pyplot as plt
def detect(filename):
    face_cascade=cv2.CascadeClassifier("/Users/huibai/Desktop/python/cv2/data/haarcascade_righteye_2splits.xml")
    img=cv2.imread(filename)
    gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    faces=face_cascade.detectMultiScale(gray,1.3,5)
    for (x,y,w,h,) in faces:
        img=cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
    plt.imshow(img)
    plt.axis('off')
    plt.show()
detect('guo.jpeg')

这里一定要注意中英文的转化,我在一开始写的时候没有注意,导致:和()都出现了中文状态,需要进一步调整才能正常运行。

识别左眼

从cv2的data文件夹内换一行代码,识别图片的正脸。

import cv2
import matplotlib.pyplot as plt
def detect(filename):
    face_cascade=cv2.CascadeClassifier("/Users/huibai/Desktop/python/cv2/data/haarcascade_frontalface_default.xml")
    img=cv2.imread(filename)
    gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    faces=face_cascade.detectMultiScale(gray,1.3,5)
    for (x,y,w,h,) in faces:
        img=cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
    plt.imshow(img)
    plt.axis('off')
    plt.show()
detect('Ray.jpeg')

运行结果如下:

 正脸

第二个作业:利用 face-recognition

一开始直接安装dlib显示报错,因此我上网查了一下mac的安装方法

mac版本比较特殊,想要安装face-recognition需要先安装cmake,利用代码:pip install cmake 进行安装

第二步需要安装dlib,在安装cmake的基础上利用代码:pip install dlib 安装

第三步就进行最后的安装face-recognition 利用代码:pip install face-recognition

然后开始编写代码

import cv2
import dlib
import matplotlib.pyplot as plt

path = "three.jpeg"
img = cv2.imread(path)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

#人脸分类器
detector = dlib.get_frontal_face_detector()
# 获取人脸检测器
#predictor = dlib.shape_predictor(r"C:Python36Libsite-packagesface_recognition_modelsmodelsshape_predictor_68_face_landmarks.dat")
predictor = dlib.shape_predictor(r"/Library/frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/face_recognition_models/models/shape_predictor_5_face_landmarks.dat")

dets = detector(gray, 1)
for face in dets:
    shape = predictor(img, face)  # 寻找人脸的68个标定点
    # 遍历所有点,打印出其坐标,并圈出来
    for pt in shape.parts():
        pt_pos = (pt.x, pt.y)
        img=cv2.circle(img, pt_pos, 2, (0, 255, 0), 1)

plt.imshow(img)
plt.axis('off')  #去掉坐标轴
plt.show()

最重要的是要找到安装face-recognition文件的位置,然后从里面找到五点识别的文件

文件名字为:shape_predictor_5_face_landmarks.dat 

最终结果为:

在进行五点/六十八点的识别后,进一步学习了人脸匹配。

人脸匹配也是利用三个库进行代码编写

我这里是找了一对双胞胎进行匹配

首先导入两张图片,并规定一个已知图片,利用另一张未知图片与已知图片进行匹配,并规定tolerance容错值,此值越小,则表明两张图片的相似度就要越高。

最后输出结果

下面是AI换脸,是我自主通过网站和老师的教材进行学习,也借鉴了其他一些博主的代码完成最终的换脸实现。

 

首先是要导入四个库,在整个编码过程中会用到,小伙伴们如果是mac可以在终端使用 pip list 查看已安装的库,如果有未安装的库,可以利用 pip install 进行安装

首先想要实现换脸,就要先获取两张图片的面部关键点,在这里是定义一个函数,需要一个外部网站的接口以及一个字典存放图片的位置。 

 定义一个函数,获取人脸的关键点后将人脸转换为字符串,然后读取两个照片,对照片获取的关键点后形成的字符串进行匹配。 

 最后倒入图片,整个程序完成后,要对新图片实现换脸,只需要改变face1 face2的图片名就好。

效果展示:

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/300346.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号