0

0

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

花韻仙語

花韻仙語

发布时间:2025-01-16 22:16:21

|

1550人浏览过

|

来源于php中文网

原创

本文介绍如何使用 python 捕获和显示来自 ip 摄像头的实时视频流。我们将利用 requests 库获取图像 url,opencv 处理图像,以及 imutils 调整图像大小。最终程序将持续从摄像头获取视频流并在屏幕上显示。 本文结束时,您将掌握实时捕获和显示网络摄像头视频帧的方法,并能根据不同 ip 摄像头流调整设置。

目标

本教程的目标是:

  • 使用 HTTP 从 IP 摄像头获取视频帧。
  • 使用 OpenCV 处理帧并显示。
  • 持续获取摄像头视频流并实时显示图像。
  • 创建循环显示流,直到用户按下按键退出。

最终结果是屏幕上显示的实时视频流,按下 Esc 键即可退出。

前提条件

立即学习Python免费学习笔记(深入)”;

在开始编写代码之前,请确保已安装以下库:

  • requests: 发送 HTTP 请求并获取图像数据。
  • opencv-python: 处理和显示图像。
  • imutils: 简化 OpenCV 使用的一组实用函数。

使用以下命令安装这些库:

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

您还需要一台 IP 摄像头或任何通过 HTTP 源流式传输视频的设备(例如,通过端口 8080 上的 MJPEG 流传输的网络摄像头)。

方法

使用手机上的 IP 网络摄像头应用:

  1. 在手机上下载并安装 IP 网络摄像头应用。 该应用可将您的手机变成 IP 摄像头。
  2. 确保电脑和手机连接到同一网络。
  3. 在手机上启动 IP 网络摄像头应用。 点击“启动服务器”按钮。这将启动手机上的相机流。
  4. URL 将显示在手机屏幕上,例如 http://192.168.0.101:8080/video。您将在 Python 脚本中使用此 URL 获取视频流。
  5. 在电脑上,在浏览器中打开此 URL 验证相机源是否正常工作。“视频渲染器”部分选择 JavaScript 以在浏览器中渲染流。

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

现在,我们已设置好摄像头,接下来是 Python 代码。

代码详解

以下是从 IP 摄像头获取并显示视频流的完整 Python 脚本:

Insou AI
Insou AI

Insou AI 是一款强大的人工智能助手,旨在帮助你轻松创建引人入胜的内容和令人印象深刻的演示。

下载
<code class="python">import requests
import cv2
import numpy as np
import imutils

# 将以下 URL 替换为您自己的 URL。确保末尾添加 "/shot.jpg"。
url = "http://<your-phone-ip>:8080/shot.jpg"
# 示例:url = "http://192.168.0.101:8080/shot.jpg"

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)
    cv2.imshow("android_cam", img)
    if cv2.waitKey(1) == 27:
        break

cv2.destroyAllWindows()</code>

步骤说明

  1. 导入库: requests, cv2, numpy, imutils

  2. 设置摄像头 URL: 定义摄像头流的 URL。 请将 <your-phone-ip> 替换为您的手机 IP 地址,并确保 /shot.jpg 部分正确。

  3. 获取图像: while True 循环持续从 URL 获取图像。 响应内容转换为 NumPy 数组。

  4. 解码和调整大小: cv2.imdecode() 解码图像,imutils.resize() 调整图像大小以适应显示。

  5. 显示图像: cv2.imshow() 显示图像。

  6. 退出循环: cv2.waitKey(1) 等待按键,按下 Esc 键 (27) 退出循环。

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

如何运行脚本

  1. 确保您的网络摄像头(或移动设备)已启动并运行。
  2. 更新脚本中的 URL 指向您的摄像头图像流。
  3. 将脚本保存为 video.py
  4. 使用以下命令运行脚本:
<code class="bash">python video.py</code>

视频流将开始在新窗口中显示。

结论

本文成功地实现了一个 Python 脚本,用于从 IP 摄像头获取和显示实时视频流。通过使用 requestsopencvimutils,我们能够轻松处理 HTTP 请求、图像数据并实时显示。该脚本可用于各种应用,例如实时视频监控系统、IP 摄像头与其他 Python 应用集成,以及实时视频流分析或处理。 通过修改脚本,您可以添加更高级的功能,例如运动检测、图像处理和视频流保存。 请记得将占位符 IP 地址替换为您实际的 IP 地址和路径。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
while的用法
while的用法

while的用法是“while 条件: 代码块”,条件是一个表达式,当条件为真时,执行代码块,然后再次判断条件是否为真,如果为真则继续执行代码块,直到条件为假为止。本专题为大家提供while相关的文章、下载、课程内容,供大家免费下载体验。

107

2023.09.25

http500解决方法
http500解决方法

http500解决方法有检查服务器日志、检查代码错误、检查服务器配置、检查文件和目录权限、检查资源不足、更新软件版本、重启服务器或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

498

2023.11.09

http请求415错误怎么解决
http请求415错误怎么解决

解决方法:1、检查请求头中的Content-Type;2、检查请求体中的数据格式;3、使用适当的编码格式;4、使用适当的请求方法;5、检查服务器端的支持情况。更多http请求415错误怎么解决的相关内容,可以阅读下面的文章。

453

2023.11.14

HTTP 503错误解决方法
HTTP 503错误解决方法

HTTP 503错误表示服务器暂时无法处理请求。想了解更多http错误代码的相关内容,可以阅读本专题下面的文章。

3628

2024.03.12

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2926

2024.08.16

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

49

2026.03.13

Python异步编程与Asyncio高并发应用实践
Python异步编程与Asyncio高并发应用实践

本专题围绕 Python 异步编程模型展开,深入讲解 Asyncio 框架的核心原理与应用实践。内容包括事件循环机制、协程任务调度、异步 IO 处理以及并发任务管理策略。通过构建高并发网络请求与异步数据处理案例,帮助开发者掌握 Python 在高并发场景中的高效开发方法,并提升系统资源利用率与整体运行性能。

88

2026.03.12

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

272

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

59

2026.03.10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.5万人学习

Django 教程
Django 教程

共28课时 | 5万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号