gpt4 book ai didi

python - OpenCV无法从图像创建视频

转载 作者:行者123 更新时间:2023-12-02 16:49:22 26 4
gpt4 key购买 nike

这是我第一次制作视频文件,但我看起来很笨拙。
these instructions的启发,我将多个图像放入一个视频中,我通过创建一个可以循环浏览包含图像的文件夹的函数来修改了代码。但这花了太长时间。我以为是因为有很多图像,但是即使我仅使用两个图像来完成,它仍然会永远运行。

我没有收到错误消息,该脚本永不停止。

谁能解释我的代码有什么问题吗?一定有一些我没发现的愚蠢的东西正在使它成为无限循环之类的东西...

import cv2
import os

forexample = "C:/Users/me/Pictures/eg/"

eg = cv2.imread(forexample+'figure.jpg')
height , width , layers = eg.shape

print "ok, got that"

def makeVideo(imgPath, videodir, videoname, width,height):
for img in os.listdir(imgPath):
video = cv2.VideoWriter(videodir+videoname,-1,1,(width,height))
shot = cv2.imread(img)
video.write(shot)
print "one video done"


myexample = makeVideo(forexample,forexample, "example.avi", width, height)

cv2.destroyAllWindows()
myexample.release()

在Windows机器上运行,Python 2.7.12,cv2 3.3.0

更新
最终使用FFmpeg创建了视频。

最佳答案

运行for-loop时,您将为每个具有相同文件名的帧创建VideoWriters。因此,它将用新框架覆盖文件。
因此,您必须在输入VideoWriter之前创建for-loop对象。

但是这样做不会使您的代码正常工作。由于错误使用命令,还有其他一些错误。

首先,os.listdir(path)将返回文件名列表,但不返回文件路径。因此,在调用文件读取功能(cv2.imread(imgPath+img))时,需要将文件夹路径添加到该文件名。
cv2.VideoWriter()将在该文件夹中创建视频文件。因此,它也将在os.listdir(path)中列出。因此,您将需要删除除图像文件以外的文件。可以通过检查文件扩展名来完成。

将所有帧写入视频后,您将需要调用release()函数来释放文件句柄。

最后,makeVideo()函数将不返回任何内容。因此,无需将其放入变量中。 (您必须release()是文件处理程序,而不是我上面所说的功能)。

请尝试以下代码。

import cv2
import os

forexample = "C:/Users/me/Pictures/eg/"

eg = cv2.imread(forexample+'figure.jpg')
height , width , layers = eg.shape

print("ok, got that ", height, " ", width, " ", layers)

def makeVideo(imgPath, videodir, videoname, width, height):
video = cv2.VideoWriter(videodir+videoname,-1,1,(width, height))
for img in os.listdir(imgPath):
if not img.endswith('.jpg'):
continue
shot = cv2.imread(imgPath+img)
video.write(shot)
video.release()
print("one video done")


makeVideo(forexample,forexample, "example.avi", width, height)

cv2.destroyAllWindows()

关于python - OpenCV无法从图像创建视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46318727/

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