gpt4 book ai didi

python-2.7 - 使用python将一系列ppm图像转换为视频

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

我正在尝试使用 IPython (python 2.7) 从 ppm 图像制作视频。

我写了这段代码:

import cv2
import glob

img1 = cv2.imread('C:/Users/Joseph/image0.ppm')
height, width, layers = img1.shape

video1 = cv2.VideoWriter('video1.avi', -1, 1, (width, height))

filenames = glob.glob('C:/Users/Joseph/*.ppm')
for filename in filenames:
print(filename)
img = cv2.imread(filename)
video1.write(img)

cv2.destroyAllWindows()
video1.release()

视频已创建但为空 size=0B 且无法打开。

没有错误信息。

我怀疑问题出在位置的写入上,因为 print(filename) 产生:

C:/Users/Joseph\image0.ppm

C:/Users/Joseph\image1.ppm

C:/Users/Joseph\image2.ppm

C:/Users/Joseph\image2.ppm

而不是我所期望的:C:/Users/Joseph/image0.ppm

你能帮帮我吗?

编辑:文件类型是类型:GIMP 2.10.14 (.ppm)。问题是否与此类 ppm 有关?

编辑 2: 问题似乎与 .ppm 没有直接关系。

的确,我试过了(考虑到Rotem的回答):

import cv2
import glob

i = cv2.imread('C:/Users/Joseph/image0.ppm')
cv2.imwrite('C:/Users/Joseph/image.jpg',i)


img1 = cv2.imread('C:/Users/Joseph/image.jpg')
height, width, layers = img1.shape

# Set FOURCC code to '24BG' - '24BG' is used for creating uncompressed raw video
video1 = cv2.VideoWriter('video1.avi', cv2.VideoWriter_fourcc('D','I','B',' '), 1, (width, height))

filenames = glob.glob('C:/Users/Joseph/*.ppm')

try:
for filename in filenames:
print(filename)
img = cv2.imread(filename)
cv2.imwrite('C:/Users/Joseph/a.jpg',img)
img=cv2.imread('C:/Users/Joseph/a.jpg')
# Display input image for debugging
cv2.imshow('img', img)
cv2.waitKey(1000)
video1.write(img)
except:
print('An error occurred.')

cv2.destroyAllWindows()
video1.release()

而且它也不起作用。而且我没有显示任何图像。

看来这是我的视频 cv2 错误。 jpg 制作精良。

编辑:解决方案。

本着 rotem 答案的精神,我尝试了: cv2.VideoWriter_fourcc('M','J','P','G') 成功了!

最佳答案

获取空视频文件的原因有多种,但路径看起来是正确的。

Windows系统C:/Users/Joseph\image0.ppmC:/Users/Joseph/image0.ppm是一样的。

  • 手动删除video1.avi 文件,只是为了确保文件没有被锁定。

我认为问题涉及video codec ,但我不能确定。

在命令 video1 = cv2.VideoWriter('video1.avi', -1, 1, (width, height)) 中,第二个参数是 FOURCC为视频编码器选择视频编解码器的代码。
将值设置为 -1 时,会打开一个对话框,让您选择编解码器。
在旧版本的 OpenCV 中,它并不总是有效。

尝试将 FOURCC 设置为 'DIB ',应用“基本 Windows 位图格式”。
使用它来创建原始(未压缩的)AVI 视频文件。

代码如下:

import cv2
import glob

img1 = cv2.imread('C:/Users/Joseph/image0.ppm')
height, width, layers = img1.shape

# Set FOURCC code to '24BG' - '24BG' is used for creating uncompressed raw video
video1 = cv2.VideoWriter('video1.avi', cv2.VideoWriter_fourcc('D','I','B',' '), 1, (width, height))

filenames = glob.glob('*.ppm')

try:
for filename in filenames:
print(filename)
img = cv2.imread(filename)

# Display input image for debugging
cv2.imshow('img', img)
cv2.waitKey(1000)

video1.write(img)
except:
print('An error occurred.')

cv2.destroyAllWindows()
video1.release()
  • 我添加了 cv2.imshow('img', img) 来帮助您调试问题,以防它不是编解码器问题。
  • 确保您没有遇到任何异常。

如果我的回答解决了您的问题,请拒绝我。

关于python-2.7 - 使用python将一系列ppm图像转换为视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60099479/

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