我正在尝试使用人脸检测和替换的样本,但我想像 jibjab.com 那样做一些平滑的事情。
一想,视频应该是预处理过的,人脸坐标也要标出来。
我使用 OpenCv 尝试使用此示例自动将检测到的人脸替换为给定图像。
while(cap.isOpened()):
ret, frame = cap.read()
if frame is None:
break
result_image = frame.copy()
faces = faceCascade.detectMultiScale(frame, 1.1, 2, 0|cv2.CASCADE_SCALE_IMAGE, (30, 30))
if len(faces) != 0:
for f in faces:
x, y, w, h = [ v for v in f ]
#resize image to the face size in the video
img = cv2.resize(replace_face, (w, h))
cv2.rectangle(frame, (x,y), (x+w,y+h), (255,255,0), 5)
sub_face = frame[y:y+h, x:x+w]
result_image[y:y+sub_face.shape[0], x:x+sub_face.shape[1]] = img
但图像替换并不像 JibJab 中那样平滑,显然它是逐帧替换的。
我该怎么做呢?如果我需要手动处理每个视频以捕获面部坐标,然后用图像替换我应该使用什么技术或工具?
我是一名优秀的程序员,十分优秀!