博客
关于我
python OpenCV视频的读取及保存
阅读量:800 次
发布时间:2023-03-06

本文共 1696 字,大约阅读时间需要 5 分钟。

使用 OpenCV 捕获 RTSP 流并保存为 AVI 文件

在这个教程中,我们将使用 OpenCV 库来从 RTSP 流中捕获视频流,并将其保存为 AVI 文件。以下是详细的实现步骤和代码示例。

首先,我们需要导入 OpenCV 的视频处理模块。以下是完整的代码示例:

import cv2# 初始化视频捕获对象cap = cv2.VideoCapture('rtsp://admin:hik12345@192.168.3.160/Streaming/Channels/1')# 设置视频编码格式fourcc = cv2.VideoWriter_fourcc(*'XVID')# 获取视频分辨率size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)),        int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))# 创建视频写入对象out = cv2.VideoWriter('camera_test.avi', fourcc, 10.0, size)while True:    # 从视频流中读取一张图片    ret, frame = cap.read()        # 将当前帧写入视频文件    out.write(frame)        # 绘制提示信息    cv2.putText(frame,                "Press Q to save and quit",                (10, 30),                cv2.FONT_HERSHEY_SIMPLEX,                0.8,                (0, 255, 0),                2)        # 显示当前帧    cv2.imshow('frame', frame)        # 等待键盘输入    if cv2.waitKey(1) & 0xFF == ord('q'):        break# 释放视频资源cap.release()out.release()cv2.destroyAllWindows()

代码解释

  • 导入 OpenCV 模块:我们使用 cv2 模块来处理视频文件。

  • 初始化视频捕获对象cap = cv2.VideoCapture('rtsp://admin:hik12345@192.168.3.160/Streaming/Channels/1') 这行代码用于打开指定 URL 的 RTSP 视频流。

  • 设置视频编码格式fourcc = cv2.VideoWriter_fourcc(*'XVID') 使用 XVID 编码格式来创建视频文件。

  • 获取视频分辨率size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))) 获取视频的宽度和高度。

  • 创建视频写入对象out = cv2.VideoWriter('camera_test.avi', fourcc, 10.0, size) 创建一个名为 camera_test.avi 的视频文件。

  • 主循环:使用 while True 循环来持续读取和写入视频帧。

    • ret, frame = cap.read() 从视频流中读取一张图片。
    • out.write(frame) 将当前帧写入视频文件。
    • 使用 cv2.putText 绘制提示信息。
    • 使用 cv2.imshow 显示当前帧。
    • 检查键盘输入,如果按下 'q' 键则退出循环。
  • 释放资源:在循环结束后,释放视频捕获和写入对象。

  • 关闭 OpenCV窗口cv2.destroyAllWindows() 关闭所有 OpenCV 窗口。

  • 通过以上代码,你可以轻松地从 RTSP 流中捕获视频流并保存为 AVI 文件。这个过程适用于多种 RTSP 源,包括 IP 相机、摄像头等。

    转载地址:http://dlafk.baihongyu.com/

    你可能感兴趣的文章
    PyQt4 代码在 PyQt5 (QHeaderView) 上不起作用
    查看>>
    PyQt4 到 PyQt5 ->mainFrame() 已弃用,需要修复才能加载网页
    查看>>
    PyQt4, class:mouseButtons用法
    查看>>
    PyQt4参考文档
    查看>>
    PyTorch Lightning:通过分布式训练扩展深度学习工作流
    查看>>
    PyQt5 - QThread:在线程仍在运行时被销毁
    查看>>
    PyQt5 - 如何从工作线程发出信号以通过 GUI 线程调用事件
    查看>>
    PyQt5 Designer 不工作:此应用程序无法启动,因为无法初始化 Qt 平台插件
    查看>>
    PyQt5 QLCNumber 没有更新
    查看>>
    PyQt5 TabWidget选项卡BarClicked TypeError:本机Qt信号不可调用
    查看>>
    PyQt5 从 PyQt4 转换信号代码
    查看>>
    PyQt5 和 asyncio:从永不完成的收益
    查看>>
    PyQt5 和 Django:如何使用 HTTP 请求(Multipart-form)上传图像?
    查看>>
    PyQt5 按钮运行功能和更新 LCD
    查看>>
    pyqt5 获取Qlabel中的图片并对其进行处理(包括Qimage转换为Mat)
    查看>>
    pyqt5 设置控件在最上层或者在下层
    查看>>
    pyqt5 设置网格布局的间距
    查看>>
    pyTorch Hub 系列#4:PGAN — GAN 模型
    查看>>
    PyQt5-基本窗口控件-QMainWindow
    查看>>
    PyQt5:如何安装/运行 Qt 设计器
    查看>>