深度学习换脸

该代码示例演示了如何利用深度学习模型InsightFace和OpenCV在Python中实现实时脸部交换。通过读取摄像头视频流,检测人脸,然后用InsightFace的模型将源图片(如‘彭于晏.png’)中的脸部特征应用到摄像头捕获的目标脸部上,实现脸部替换并显示结果。
摘要由CSDN通过智能技术生成

github refer:insightface/examples/in_swapper/inswapper_main.py at fc622003d5410a64c96024563d7a093b2a55487c · deepinsight/insightface · GitHub

深度学习很方便,都是端到端的,只管调用模型就行了 一个模型获得图片特征,一个模型用这些特征去原图中换脸。 其中原理我还没有收到深入去了解。

代码:

import cv2
import insightface
from insightface.app import FaceAnalysis

if __name__ == '__main__':
    # cudnn_ops_infer64_8.dll 把这个东西所在的目录加入到环境变量中
    face_analyer = FaceAnalysis(name='buffalo_l')
    face_analyer.prepare(ctx_id=0, det_size=(640, 640))
    face_swapper = insightface.model_zoo.get_model('inswapper_128.onnx', download=True, download_zip=True)


    source_img = cv2.imread("彭于晏.png") # 把摄像头前的我换成彭于晏的脸
    source_faces = face_analyer.get(source_img)
    source_faces = sorted(source_faces, key = lambda x : x.bbox[0])
    assert len(source_faces)==1
    source_face = source_faces[0]


    cap = cv2.VideoCapture(0)  # 修改参数0为其他数字,可以切换摄像头
    while(True):
        # 从摄像头读取一帧数据
        ret, target_img = cap.read()

        # 处理目标图片
        target_faces = face_analyer.get(target_img)
        target_faces = sorted(target_faces, key=lambda x: x.bbox[0])
        for target_face in target_faces:
            target_img = face_swapper.get(target_img, target_face, source_face, paste_back=True)


        # 显示处理后的视频帧
        cv2.imshow('frame',target_img)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

    # 释放视频流对象
    cap.release()
    # 关闭所有窗口
    cv2.destroyAllWindows()

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值