python读取海康威视摄像头的视频流

要从海康威视摄像头读取视频流并在Python中实时显示视频画面,同时每秒从视频流中抽取一帧图片保存到指定路径,你可以使用opencv-python库。这个库提供了强大的视频处理功能,包括从RTSP流中读取视频数据。

以下是一个示例脚本,它展示了如何实现上述功能:

  1. 安装必要的库(如果你还没有安装的话):

    bash 复制代码
    pip install opencv-python
  2. 编写Python脚本来读取RTSP流、显示视频并保存帧:

python 复制代码
import cv2
import datetime
import os

# RTSP URL from Hikvision camera
rtsp_url = "rtsp://username:password@camera_ip:port/Streaming/Channels/101"

# 创建VideoCapture对象
cap = cv2.VideoCapture(rtsp_url)

# 检查是否成功打开视频流
if not cap.isOpened():
    print("Error: Cannot open video stream or file")
    exit()

# 设置保存图片的文件夹
save_folder = "frames"
if not os.path.exists(save_folder):
    os.makedirs(save_folder)

# 帧计数器,用于每秒保存一帧
frame_count = 0
last_saved = 0

while True:
    # 读取一帧
    ret, frame = cap.read()

    # 如果正确读取帧,ret为True
    if not ret:
        print("Can't receive frame (stream end?). Exiting ...")
        break

    # 显示结果帧
    cv2.imshow('frame', frame)

    # 帧计数器增加
    frame_count += 1

    # 检查是否需要保存帧
    if (frame_count - last_saved) >= 25:  # 假设摄像头以25fps运行,所以每秒保存一帧
        last_saved = frame_count
        # 构造保存图片的文件名
        timestamp = datetime.datetime.now().strftime("%Y%m%d%H%M%S")
        filename = os.path.join(save_folder, f"frame_{timestamp}.jpg")
        cv2.imwrite(filename, frame)
        print(f"Saved {filename}")

    # 按'q'键退出循环
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 释放捕获
cap.release()
cv2.destroyAllWindows()

注意:

  • 请将rtsp_url中的username、password、camera_ip和port替换为你的摄像头实际的认证信息和IP地址。
  • 摄像头帧率可能不是标准的25fps,因此你可能需要根据你的摄像头实际帧率调整frame_count - last_saved >= 25中的25。你可以通过摄像头的技术规格或软件工具来获取准确的帧率。
  • 保存图片时,文件名使用了时间戳来确保唯一性。
  • 如果你在处理大量数据时遇到性能问题,请考虑降低视频分辨率或帧率。
  • 确保在运行此脚本时,你的网络设置允许访问摄像头的RTSP流。
相关推荐
Peter-OK13 分钟前
PostgreSQL学习笔记(入门-进阶-精通说明)
笔记·学习·postgresql
承渊政道41 分钟前
Linux网络学习【Reactor反应堆模式】
linux·网络·学习·ubuntu·reactor
冻柠檬飞冰走茶2 小时前
字母移动游戏题解:贪心求最长可保留连续子串(附 C 实现)
c语言·开发语言·数据结构·算法·动态规划
FRing032 小时前
vue2干货总结7(自定义指令、插槽、单页应用程序、路由的使用(VueRouter))
开发语言·前端·vue.js·vue2
橙橙笔记2 小时前
具身智能的学习 - 完成一个机械臂 第1节
python·学习·机械臂·具身智能
雪落漂泊2 小时前
C++算法 二分查找篇(上)
开发语言·c++·算法
小小张说故事2 小时前
Python 的 class 语句到底执行了什么?拆开 __prepare__、metaclass.__new__ 和那个被讲反的 __set_name__ 顺序
python
成都蜀味缘餐饮技术培训学校2 小时前
手撕烤兔技术培训实战指南,秘制腌料配方比例与调制手法
大数据·经验分享·笔记·其他·微信公众平台
聪明的笨猪猪3 小时前
AI应用架构选型:架构师的核心决策困境与权衡
经验分享·面试·架构
波力海苔夹心脆6753 小时前
C# WPF 资源字典详解:ResourceDictionary、MergedDictionaries 与自定义控件案例
开发语言·c#·wpf·入门教程·resource·资源字典