github refer:insightface/examples/in_swapper/inswapper_main.py at fc622003d5410a64c96024563d7a093b2a55487c · deepinsight/insightface · GitHub
深度学习很方便,都是端到端的,只管调用模型就行了 一个模型获得图片特征,一个模型用这些特征去原图中换脸。 其中原理我还没有收到深入去了解。
代码:
import cv2
import insightface
from insightface.app import FaceAnalysisif __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)==1source_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()
本文链接:https://my.lmcjl.com/post/20401.html
展开阅读全文
4 评论