在开始修改视频中的帧之前,我试图获得一个复制视频的非常简单的示例。但是,与 2.8 mb Barriers.avi 视频相比,output.avi 视频是一个 5kb 的损坏文件。我使用的是 OpenCV 版本 4.2.0 和 Python 版本 3.7.7。
这是代码:
import cv2
input = cv2.VideoCapture("../video/barriers.avi")
height = int(input.get(cv2.CAP_PROP_FRAME_HEIGHT))
width = int(input.get(cv2.CAP_PROP_FRAME_WIDTH))
fourcc = cv2.VideoWriter_fourcc(*'DIVX')
out = cv2.VideoWriter('../video/output5.avi', fourcc, 30, (height, width), isColor=True)
while input.isOpened():
# get validity boolean and current frame
ret, frame = input.read()
# if valid tag is false, loop back to start
if not ret:
break
else:
out.write(frame)
input.release()
out.release()
Run Code Online (Sandbox Code Playgroud)
如果我打印框架形状,我会得到:
(480, 640, 3)
Run Code Online (Sandbox Code Playgroud)
注意:其他堆栈溢出解决方案都没有帮助。
编辑:如果使用 cv2.imshow(),所有帧都显示良好。
当尝试使用支持 GPU 的张量流时,我遇到了一些错误消息,尽管日志中有许多成功消息(见下文),但这些错误消息似乎限制了我运行 GPU 的能力。在软件方面,我使用的是 Anaconda Lite 环境。硬件方面,我有RTX 2080 GPU。以下是我的环境中安装的软件包。
这是重要的安装,但我在下面附上了整个 conda 列表。
absl-py 0.12.0 pypi_0 pypi
astunparse 1.6.3 pypi_0 pypi
ca-certificates 2020.12.5 h5b45459_0 conda-forge
cachetools 4.2.1 pypi_0 pypi
certifi 2020.12.5 py37h03978a9_1 conda-forge
chardet 4.0.0 pypi_0 pypi
cudatoolkit 11.0.3 h3f58a73_8 conda-forge
cudnn 8.0.5.39 hfe7f257_1 conda-forge
cycler 0.10.0 pypi_0 pypi
filetype 1.0.7 pypi_0 pypi
flatbuffers 1.12 pypi_0 pypi
gast 0.3.3 pypi_0 pypi
google-auth 1.28.0 pypi_0 pypi
google-auth-oauthlib 0.4.4 pypi_0 pypi
google-pasta 0.2.0 pypi_0 pypi
grpcio 1.32.0 …Run Code Online (Sandbox Code Playgroud)