我正在使用Python4.0和OpenCV 3.7创建一个时间流逝的视频。
在构造VideoWriter对象时,文档说明大小参数应该是一个元组。
当我给它一个元组时,它会拒绝它。当我尝试用其他东西替换它时,它不会接受它,因为它说参数不是元组。
当大小不是元组时:
out = cv2.VideoWriter('project.avi', 1482049860, 30, height, width)
SystemError: new style getargs format but argument is not a tuple当我将大小更改为元组时:
out = cv2.VideoWriter('project.avi', 1482049860, 30, (height, width))
TypeError: must be real number, not tuple我只想创建一个简单的cv2.VideoWriter对象。
发布于 2019-05-31 04:23:07
我试着从上传的视频中获取高度和宽度,使用:
width = cap.get(cv2.CAP_PROP_FRAME_WIDTH)
height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)我将其更改为:
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))现在我不明白这个错误了。它还不能作为一个整体工作,但是那个特定的错误已经不存在了。
发布于 2020-04-09 18:29:19
我遇到了同样的情况,以下是我的解决方案:
似乎cv2.VideoWriter()倾向于“丢弃”类型错误的参数。在我的例子中,我使用pathlib.Path作为第一个输出文件名参数,如下所示:
p=Path('project.avi')
out = cv2.VideoWriter(p, 1482049860, 30, frameSize=(height, width))但是cv2.VideoWriter()只接受str,所以它“丢弃”了p,并接收到:
out = cv2.VideoWriter(1482049860, 30, frameSize=(height, width))那么(height, width)实际上处于实数位置,它需要实数,但得到了元组
所以我建议你检查每个参数,确保它们有正确的类型。
发布于 2019-05-30 10:18:33
尝试更新到opencv v4.1.0。在那里没有看到这个问题。
否则,请尝试:
out = cv2.VideoWriter('project.avi', 1482049860, 30, frameSize=(height, width))https://stackoverflow.com/questions/56370802
复制相似问题