我现在遇到了类似的问题。我有一个可以裁剪视频脸部的程序。我使用 OpenCV 读入帧,然后对它们进行裁剪。之后我想将裁剪后的脸部视频保存到新视频中。
首先我也使用 Haar Cascade。一切工作正常,但有一些总体性能不足 --> 它经常无法识别面孔。
现在我想使用 MTCNN。我更改了代码以便与 MTCNN 配合使用。一切工作正常-->它读取帧,对其执行裁剪等。但是,一旦我去保存视频,问题就会发生。代码运行良好,但是打开保存的视频后,出现视频已损坏的错误。
我坐了 2 个小时,很困惑,因为代码是相同的。所有输出都是相同的(即格式、大小等)
我现在不得不得出结论,MTCNN 和 Opencv 之间存在一些错误。尽管这对我来说完全不明白为什么会发生这种情况。
更新:
如果您运行以下代码:它运行良好并且视频再次保存。但是,如果您取消注释顶部的 2 行 --> 它会损坏文件,并且您将不再获得工作视频。不幸的是,我还无法弄清楚其中的原因。
import cv2
# from mtcnn.mtcnn import MTCNN
# cropper = MTCNN()
read_video = cv2.VideoCapture('video.mp4')
fps = read_video.get(cv2.CAP_PROP_FPS)
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
write_video = cv2.VideoWriter('new3.mp4', fourcc, fps, (256,256))
images = []
success,image = read_video.read()
count = 0
while success:
print(count)
images.append(image)
success, image = read_video.read()
count += 1
for i in images:
write_video.write(cv2.resize(i, (256, 256), interpolation=cv2.INTER_AREA))