gpt4 book ai didi

OpenCV VideoWriter 不写入 Output.avi

转载 作者:太空宇宙 更新时间:2023-11-03 22:18:25 25 4
gpt4 key购买 nike

我正在尝试编写一段简单的代码来拍摄视频、裁剪视频并将其写入输出文件。

系统设置:

OS: Windows 10
Conda Environment Python Version: 3.7
OpenCV Version: 3.4.2
ffmpeg Version: 2.7.0

文件输入规范:

Codec: H264 - MPEG-4 AVC (part 10)(avc1)
Type: Video
Video resolution: 640x360
Frame rate: 5.056860

代码未能产生输出(它创建文件但不写入文件):

import numpy as np
import cv2

cap = cv2.VideoCapture('croptest1.mp4')

# Define the codec and create VideoWriter object
fourcc = cv2.VideoWriter_fourcc('F', 'M', 'P', '4')
out = cv2.VideoWriter('output.avi', fourcc, 20.0,
(int(cap.get(3)), int(cap.get(4))))

# Verify input shape
width = cap.get(3)
height = cap.get(4)
fps = cap.get(5)
print(width, height, fps)

while(cap.isOpened()):
ret, frame = cap.read()
if ret == True:
# from top left =frame[y0:y1, x0:x1]
cropped_frame = frame[20:360, 0:640]

# write the clipped frames
out.write(cropped_frame)

# show the clipped video
cv2.imshow('cropped_frame', cropped_frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break

# Release everything if job is finished
cap.release()
out.release()
cv2.destroyAllWindows()

fourcc 和 out 变量的变体试图让编解码器工作:

fourcc = cv2.cv.CV_FOURCC(*'DIVX')
fourcc = cv2.VideoWriter_fourcc(*'DIVX')

out = cv2.VideoWriter('ditch_effort.avi', -1, 20.0, (640, 360))

Based on this link我应该可以引用this fourcc reference list确定要使用的适当 fourcc 压缩代码。我尝试了很多变体,但无法写入输出文件。当我运行代码时,#verify 输入形状变量会打印相应的 640、360 和正确的帧速率。

任何人都可以告诉我我的问题是什么......将不胜感激。

最佳答案

错误的原因是cropped_frame 的维度(640,340)与writer 中声明的维度(640,360)不同。

所以作者应该是:

out = cv2.VideoWriter('output.avi', fourcc, 20.0,(640,340))

关于OpenCV VideoWriter 不写入 Output.avi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54738747/

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