gpt4 book ai didi

python - 使用 OpenCV + Python + Mac 编写视频

转载 作者:太空狗 更新时间:2023-10-29 21:32:42 25 4
gpt4 key购买 nike

当我尝试将帧写入视频时,我不断收到断言错误。我得到的错误是这样的:

Traceback (most recent call last):
File "VideoMixer.py", line 23, in <module>
cv.WriteFrame(writer, cv.LoadImage(fileName))
cv.error: dst.data == dst0.data

这是我的脚本:

import cv
import sys

files = sys.argv[1:]

for f in files:
capture = cv.CaptureFromFile(f)
height = cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_WIDTH)
width = cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_HEIGHT)
fps = cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_FPS)
fourcc = cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_FOURCC)
print fourcc
writer = cv.CreateVideoWriter('ok.mov', int(fourcc),fps,(int(width),int(height)),1)
print writer
for i in range(30):
frame = cv.QueryFrame(capture)
print frame
if frame:
cv.WriteFrame(writer, frame)

将帧保存为图像效果很好,所以我知道捕获没有问题。我创造作家错了吗? 'print fourcc' 输出 0.0,但我尝试了很多 FOUR_CC 值。

谢谢!

最佳答案

您的某些帧是否具有不同的色彩空间或深度?一些观察:

  • 您在代码中交换了高度和宽度,这是故意的吗?
  • 您的 fourcc 应该是一个大于 0 的整数。请参阅下面的示例。

我没有亲自使用 OpenCV 生成 Quicktime 视频,但这对我生成未压缩的 AVI 文件很有用。我使用 cv.CV_FOURCC 函数选择 I420 fourcc:

import cv
import sys

# standard RGB png file
path = 'stack.png'
cap = cv.CaptureFromFile(path)
fps = 24
width = int(cv.GetCaptureProperty(cap, cv.CV_CAP_PROP_FRAME_WIDTH))
height = int(cv.GetCaptureProperty(cap, cv.CV_CAP_PROP_FRAME_HEIGHT))
# uncompressed YUV 4:2:0 chroma subsampled
fourcc = cv.CV_FOURCC('I','4','2','0')
writer = cv.CreateVideoWriter('out.avi', fourcc, fps, (width, height), 1)
for i in range(90):
cv.GrabFrame(cap)
frame = cv.RetrieveFrame(cap)
cv.WriteFrame(writer, frame)

更新:VLC播放out.avi截图:

enter image description here

在 Quicktime 中:

enter image description here

关于python - 使用 OpenCV + Python + Mac 编写视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5426637/

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