首页 >后端开发 >Python教程 >如何使用 Python 从 IP 摄像机捕获实时视频流

如何使用 Python 从 IP 摄像机捕获实时视频流

DDD
DDD原创
2025-01-16 20:15:10965浏览

本 Python 教程演示了从 IP 摄像机捕获和显示实时视频源。我们将利用 requestsOpenCVimutils 来获取、处理和显示图像。 该脚本不断检索并显示视频流,直到用户退出。

目标:

本教程展示如何:

  • 通过 HTTP 从 IP 摄像机检索视频帧。
  • 使用OpenCV处理和显示帧。
  • 持续捕捉并实时显示图像。
  • 实现一个循环来显示流,按下按键时退出。

最终输出是实时视频流,可以通过按 Esc 键终止。

先决条件:

安装这些库:

<code class="language-bash">pip3 install requests opencv-python imutils</code>

您还需要一个 IP 摄像头或通过 HTTP 传输视频流的设备(例如,在端口 8080 上使用 MJPEG 的网络摄像头)。

使用 IP 网络摄像头应用程序(移动设备):

  1. 在您的手机上安装 IP 网络摄像头应用程序。
  2. 将您的电脑和手机连接到同一网络。
  3. 启动 IP 网络摄像头应用程序的服务器。 将显示 URL(例如 http://192.168.0.101:8080/video)。在 Python 脚本中使用此 URL。 在应用程序的视频渲染器下选择“Javascript”。
  4. 通过在浏览器中打开 URL 来验证相机源是否正常工作。

How to Capture Live Video Stream from an IP Camera Using Python

Python 代码:

<code class="language-python">import requests
import cv2
import numpy as np
import imutils

# Replace with your IP camera URL.  Ensure "/shot.jpg" is appended.
url = "http://192.168.0.101:8080/shot.jpg"  # Example URL

while True:
    img_resp = requests.get(url)
    img_arr = np.array(bytearray(img_resp.content), dtype=np.uint8)
    img = cv2.imdecode(img_arr, -1)
    img = imutils.resize(img, width=1000, height=1800) #Optional Resizing
    cv2.imshow("IP Camera Feed", img)
    if cv2.waitKey(1) == 27: # Esc key to exit
        break

cv2.destroyAllWindows()</code>

分步说明:

  1. 导入库:导入 HTTP 请求、图像处理、数组处理和 OpenCV 实用函数所需的库。

  2. 摄像机 URL: 设置网络摄像机流的 URL。 将占位符 IP 地址替换为您相机的 IP 地址。

  3. 图像检索: while 循环不断从 URL 获取图像。

  4. 解码和调整大小:原始图像数据被转换为 NumPy 数组,使用 OpenCV 进行解码,并可选择调整大小以获得更好的显示效果。

  5. 显示:图像显示在标题为“IP 摄像机源”的窗口中。

  6. 退出条件: cv2.waitKey(1)等待按键。按 Esc (27) 会中断循环。

  7. 清理: cv2.destroyAllWindows() 关闭所有 OpenCV 窗口。

运行脚本:

  1. 启动您的网络摄像头。
  2. 使用相机的正确 URL 更新 url 变量。
  3. 保存脚本(例如,ipcam_viewer.py)。
  4. 运行:python ipcam_viewer.py

视频流应该出现。 按 Esc 关闭。

结论:

该脚本提供了用于查看 IP 摄像机源的基本框架。 它可以扩展到包括运动检测或视频录制等功能。请记住将占位符 URL 替换为您相机的实际流地址。

以上是如何使用 Python 从 IP 摄像机捕获实时视频流的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn