【问题标题】:How do you set the frame size of cv.CreateVideoWriter如何设置 cv.CreateVideoWriter 的帧大小
【发布时间】:2011-10-14 16:28:09
【问题描述】:

如果我尝试:

writer = cv.CreateVideoWriter(file, -1,(int(800),int(600)), is_color=1)

-或-

writer = cv.CreateVideoWriter(file, -1,(800,600), is_color=1)

-或-

writer = cv.CreateVideoWriter(file, -1,(800.0,600.0), is_color=1)

我得到错误:

TypeError:需要浮点数

有了这个我得到了进步:

writer = cv.CreateVideoWriter(file, -1, 25.0, (800,600), is_color=1)

错误:Gstreamer Opencv 后端实际上不支持此编解码器。

输入文件为.png,输出为.avi

【问题讨论】:

  • 浮动建议的评论发生了什么?

标签: python opencv typeerror computer-vision


【解决方案1】:

你需要传递一个有效的fourccfps

fourcc = cv.CV_FOURCC('X','V','I','D')
fps = 25.0 # or 30.0 for a better quality stream
writer = cv.CreateVideoWriter(file, fourcc, 25.0, (800,600), is_color=1)

或者,您可以在 Python 中使用命名参数。这种方式更不容易出错:

writer = cv.CreateVideoWriter(
    filename=file,
    fourcc=cv.CV_FOURCC('X','V','I','D'),
    fps=25.0,
    frame_size=(800,600),
    is_color=1)

fourcc 是目标 avi 中视频流编解码器的 32 位标识符。根据cap_gstreamer.cpp,gstreamer 的可能值为:

cv.CV_FOURCC('H','F','Y','U') # HuffYUV
cv.CV_FOURCC('D','R','A','C') # BBC Dirac
cv.CV_FOURCC('X','V','I','D') # MPEG-4 Part 2
cv.CV_FOURCC('X','2','6','4') # MPEG-4 Part 10 (aka. H.264 or AVC)
cv.CV_FOURCC('M','P','1','V') # MPEG-1 video

我相信以上所有内容都可以放在一个 avi 容器中。

【讨论】:

  • 取得了一些进展,见上文
  • 浮动建议的评论发生了什么?
  • @linuxrules94:我错了。您正在将您的分辨率对传递给您的 fps 必须去的地方。这就是为什么 OpenCv 抱怨没有得到浮动的原因。我认为它也确实期望大小值的浮点数,这没有多大意义。
  • @linuxrules94 - 好了 :) 欢迎来到 Stack Overflow!
  • 讽刺的是:我刚刚发送了该评论,当我发送评论时,我获得了投票的特权。 @junjanes
猜你喜欢
  • 1970-01-01
  • 2014-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多