gpt4 book ai didi

python - 如何让openCV保存它对视频所做的更改

转载 作者:行者123 更新时间:2023-12-02 17:29:11 24 4
gpt4 key购买 nike

我正在尝试编写一个程序,在一组目录中将所有视频的大小从 448x800 调整为 480x640,但由于某种原因,OpenCV 尽管没有抛出任何错误,但并未遵循这些更改。我正在使用 OpenCV 4.1.0 和 Python 3.7。当我对单个文件运行 mediainfo 时,分辨率显示相同。如果这有什么不同,我会在 Ubuntu 上运行它。

从打印语句中我可以看出,它可以很好地调整各个帧的大小,但问题在于实际保存完成的视频。

import cv2
import os

dirs = ['group 3','group 4','group 5','group 6','group 7','group 8']

#cycles through the directories
for i in dirs:
files = os.listdir(i)
print (i)
#cycles through the files in each directory
for j in files:
if j.endswith('.avi'):
cap = cv2.VideoCapture(i + '/' + j)
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi', fourcc, 15, (640, 480))
while True:
ret, frame = cap.read()
if ret==True:
print(frame.shape)
b = cv2.resize(frame, (640,480), fx=0, fy=0, interpolation = cv2.INTER_CUBIC)
out.write(b)
print(b.shape)
else:
break
cap.release()
out.release()
cv2.destroyAllWindows()

这不会引发任何错误,但实际上不会更改文件。有什么想法吗?我错过了一些简单的东西吗?

最佳答案

out = cv2.VideoWriter('output.avi', fourcc, 15, (640, 480))定义了一个视频写入器,它将写入一个名为 output.avi 的文件中。在您的工作目录中。由于您始终使用相同的文件名,因此结果将是最后找到的视频,已调整大小。

要解决此问题,只需将上面的行更改为:out = cv2.VideoWriter(j.replace(".avi", "_resized.avi", fourcc, 15, (640, 480))
然后会得到像 myvideo_resized.avi 这样的文件名,其中“myvideo”是旧文件名的示例。

此外,如果您想正确检查文件是否为视频文件,请尝试 this .

高温高压

关于python - 如何让openCV保存它对视频所做的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56970032/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com