人脸识别图片眨眼生成器,手机制作人脸眨眼张嘴, 代替真人刷脸软件

简介: 代码实现了基于面部特征点的人脸动画生成,包括眨眼和张嘴动作。它使用dlib进行人脸检测和特征点定位

下载地址:https://www.pan38.com/dow/share.php?code=JCnzE 提取密码:1121

代码实现了基于面部特征点的人脸动画生成,包括眨眼和张嘴动作。它使用dlib进行人脸检测和特征点定位,然后通过图像变形技术创建动画效果。请注意,这需要预先下载dlib的68点人脸特征点模型文件。

import cv2
import dlib
import numpy as np
from scipy.spatial import Delaunay
from skimage.transform import PiecewiseAffineTransform, warp

初始化dlib的人脸检测器和特征点预测器

detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")

def load_image(image_path):
img = cv2.imread(image_path)
if img is None:
raise ValueError(f"无法加载图像: {image_path}")
return cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

def get_landmarks(image):
gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)
rects = detector(gray, 1)
if len(rects) == 0:
raise ValueError("未检测到人脸")
shape = predictor(gray, rects[0])
return np.array([(shape.part(i).x, shape.part(i).y) for i in range(68)])

def create_blink_animation(image, landmarks, frames=10):

# 眼睛特征点索引(dlib 68点模型)
left_eye = landmarks[36:42]
right_eye = landmarks[42:48]

# 计算眼睛中心
left_eye_center = left_eye.mean(axis=0)
right_eye_center = right_eye.mean(axis=0)

# 创建动画帧
animation_frames = []
for i in range(frames):
    # 计算当前帧的闭合程度 (0=完全睁开, 1=完全闭合)
    if i < frames//2:
        close_ratio = i / (frames//2)
    else:
        close_ratio = (frames - i) / (frames//2)

    # 创建变形后的特征点
    deformed_landmarks = landmarks.copy()

    # 变形左眼
    for j in range(36, 42):
        original = landmarks[j]
        direction = left_eye_center - original
        deformed_landmarks[j] = original + direction * close_ratio * 0.7

    # 变形右眼
    for j in range(42, 48):
        original = landmarks[j]
        direction = right_eye_center - original
        deformed_landmarks[j] = original + direction * close_ratio * 0.7

    # 应用变形
    warped_img = warp_image(image, landmarks, deformed_landmarks)
    animation_frames.append(warped_img)

return animation_frames

def create_mouth_animation(image, landmarks, frames=10):

# 嘴巴特征点索引
mouth = landmarks[48:68]
mouth_center = mouth.mean(axis=0)

# 创建动画帧
animation_frames = []
for i in range(frames):
    # 计算张嘴程度 (0=闭合, 1=完全张开)
    if i < frames//2:
        open_ratio = i / (frames//2)
    else:
        open_ratio = (frames - i) / (frames//2)

    # 创建变形后的特征点
    deformed_landmarks = landmarks.copy()

    # 变形嘴巴
    for j in range(48, 68):
        original = landmarks[j]
        if j in [48, 54]:  # 嘴巴角落
            direction = np.array([0, -1]) * 10 * open_ratio
        else:
            direction = mouth_center - original
            direction = direction * 0.5 * open_ratio

        deformed_landmarks[j] = original + direction

    # 应用变形
    warped_img = warp_image(image, landmarks, deformed_landmarks)
    animation_frames.append(warped_img)

return animation_frames

def warp_image(image, src_points, dst_points):

# 创建三角剖分
tri = Delaunay(src_points)

# 创建PiecewiseAffineTransform对象
tform = PiecewiseAffineTransform()
tform.estimate(src_points[tri.simplices], dst_points[tri.simplices])

# 应用变形
warped = warp(image, tform, output_shape=image.shape[:2])
return (warped * 255).astype(np.uint8)

def save_animation(frames, output_path, fps=10):
height, width = frames[0].shape[:2]
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter(output_path, fourcc, fps, (width, height))

for frame in frames:
    out.write(cv2.cvtColor(frame, cv2.COLOR_RGB2BGR))

out.release()

def main():

# 加载图像
image_path = "input_face.jpg"
image = load_image(image_path)

# 获取特征点
landmarks = get_landmarks(image)

# 创建眨眼动画
blink_frames = create_blink_animation(image, landmarks)

# 创建张嘴动画
mouth_frames = create_mouth_animation(image, landmarks)

# 合并动画
combined_frames = blink_frames + mouth_frames

# 保存结果
save_animation(combined_frames, "output_animation.mp4")

print("动画生成完成!")

if name == "main":
main()

相关文章
|
3月前
|
数据安全/隐私保护 计算机视觉 Python
一键生成眨眼照片app,一键生成眨眼照片,秒解人脸识别软件
这段代码使用了dlib的人脸检测和关键点定位功能来识别眼睛区域,然后通过图像处理技术模拟眨眼效果
|
3月前
|
算法 数据安全/隐私保护 计算机视觉
人脸识别图片眨眼生成器,一键生成眨眼照片,照片眨眼生成器免费
要使用此代码,您需要先下载dlib的68点人脸关键点模型文件(shape_predictor_68_face_landmarks.dat)
|
3月前
|
数据安全/隐私保护 计算机视觉 Python
人脸识别图片眨眼生成器,虚拟相机过人脸软件, 秒解人脸识别软件
这个系统包含三个主要模块:人脸检测与特征点识别、虚拟相机实现和主程序入口。代码使用了dlib库
|
弹性计算 Java PHP
新手用户注册阿里云账号、实名认证、购买云服务器图文教程参考
对于初次购买阿里云产品的用户来说,第一步要做的是注册账号并完成实名认证,然后才是购买阿里云服务器或者其他云产品,本文为大家以图文形式展示一下新手用户从注册阿里云账号、实名认证到购买云服务器完整详细教程,以供参考。
新手用户注册阿里云账号、实名认证、购买云服务器图文教程参考
|
文字识别 算法 API
视觉智能开放平台产品使用合集之uniapp框架如何使用阿里云金融级人脸识别
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
313 0
|
机器学习/深度学习 搜索推荐 计算机视觉
【阿里云OpenVI-人脸感知理解系列之人脸识别】基于Transformer的人脸识别新框架TransFace ICCV-2023论文深入解读
本文介绍 阿里云开放视觉智能团队 被计算机视觉顶级国际会议ICCV 2023接收的论文 &quot;TransFace: Calibrating Transformer Training for Face Recognition from a Data-Centric Perspective&quot;。TransFace旨在探索ViT在人脸识别任务上表现不佳的原因,并从data-centric的角度去提升ViT在人脸识别任务上的性能。
2974 341
对于阿里云OpenAPI的域名实名认证
【1月更文挑战第5天】【1月更文挑战第22篇】对于阿里云OpenAPI的域名实名认证
157 1
|
人工智能 计算机视觉
阿里云产品体系分为6大分类——人工智能——分为10种模块——人脸识别
阿里云产品体系分为6大分类——人工智能——分为10种模块——人脸识别自制脑图
243 1

热门文章

最新文章