使用Flask在本地调用树莓派摄像头

发布时间:2026/10/28 9:38:58

使用Flask在本地调用树莓派摄像头 本文主要是记录如果在本地远程调用树莓派的摄像头关于树莓派无线连接可以参考我另外一篇文章。树莓派无线连接设置树莓派4B无线设置USB连接摄像头本地环境为windows11操作系统想通过网络远程调用树莓派上的摄像头(我这里的摄像头是通过USB连接在树莓派上的)先在树莓派上新建一个video_steam.py的python脚本代码如下。(这里的树莓派ip需要根据你实际情况进行配置可以在树莓派中输入ifconfig进行查看设备ip)# coding:utf-8 # video_stream.py - 在树莓派上运行 from flask import Flask, Response import cv2 import threading app Flask(__name__) # 全局摄像头对象 camera None frame_lock threading.Lock() def init_camera(): 初始化摄像头 global camera # 尝试不同的摄像头索引 for i in range(3): # 尝试0, 1, 2 print(f尝试打开摄像头索引 {i}...) cap cv2.VideoCapture(i) if cap.isOpened(): # 设置分辨率可以调整 cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640) cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480) print(f摄像头在索引 {i} 成功打开) camera cap return True cap.release() print(错误无法打开任何摄像头) print(请检查) print(1. 摄像头是否正确连接) print(2. 树莓派是否识别到摄像头运行 ls /dev/video* 查看) print(3. 如果有 /dev/video0尝试修改代码中的摄像头索引) return False def generate_frames(): 生成视频帧的生成器函数 global camera while True: with frame_lock: if camera is None: print(摄像头未初始化) break success, frame camera.read() if not success: print(读取摄像头帧失败) break else: # 压缩图像以减小传输大小 ret, buffer cv2.imencode(.jpg, frame, [cv2.IMWRITE_JPEG_QUALITY, 80]) if ret: # 转换为字节 frame_bytes buffer.tobytes() # 使用MJPEG格式流 yield (b--frame\r\n bContent-Type: image/jpeg\r\n\r\n frame_bytes b\r\n) app.route(/) def index(): 主页显示一个简单的测试页面 return html headtitle树莓派摄像头/title/head body h1树莓派摄像头实时视频/h1 img src/video_feed width640 height480 p如果看到这个图像说明视频流服务器正在运行。/p p在你的电脑上使用OpenCV程序连接这个视频流。/p /body /html app.route(/video_feed) def video_feed(): 视频流路由 return Response(generate_frames(), mimetypemultipart/x-mixed-replace; boundaryframe) if __name__ __main__: print(正在初始化摄像头...) if init_camera(): print(摄像头初始化成功) print(f服务器将在 http://[你的树莓派IP]:5000 运行) print(按 CtrlC 停止服务器) try: # 启动Flask服务器 # 注意在局域网中其他设备访问时需要用树莓派的实际IP app.run(host192.168.1.51, port5000, debugFalse, threadedTrue) except KeyboardInterrupt: print(\n正在关闭服务器...) finally: # 释放摄像头资源 if camera is not None: camera.release() print(摄像头已释放) else: print(摄像头初始化失败请检查连接)在树莓派上运行该代码python3 stream_server.py此时出现以下内容说明运行成功piraspberrypi:~/Videos $ python3 stream_server.py 正在初始化摄像头... 尝试打开摄像头索引 0... 摄像头在索引 0 成功打开 摄像头初始化成功 服务器将在 http://[你的树莓派IP]:5000 运行 按 CtrlC 停止服务器 * Serving Flask app stream_server (lazy loading) * Environment: production WARNING: Do not use the development server in a production environment. Use a production WSGI server instead. * Debug mode: off * Running on http://192.168.1.51:5000/ (Press CTRLC to quit)然后你就可以本地电脑上输入以上地址来预览摄像头是否读取成功了。以上是利用网页端进行测试查看在本地能否调用树莓派摄像头。如果你希望使用opencv在本地调用树莓派摄像头可在你本地新建一个python文件输入以下代码前提是必须保证你树莓派中stream_server.py始终在运行的。import cv2 import requests import numpy as np PI_IP 192.168.1.51 # 改成你的树莓派IP url fhttp://{PI_IP}:5000/video_feed stream requests.get(url, streamTrue) bytes_buffer bytes() print(按 q 退出) while True: for chunk in stream.iter_content(chunk_size1024): bytes_buffer chunk start bytes_buffer.find(b\xff\xd8) end bytes_buffer.find(b\xff\xd9) if start ! -1 and end ! -1: jpg bytes_buffer[start:end 2] bytes_buffer bytes_buffer[end 2:] frame cv2.imdecode(np.frombuffer(jpg, dtypenp.uint8), cv2.IMREAD_COLOR) if frame is not None: cv2.imshow(树莓派摄像头, frame) if cv2.waitKey(1) 0xFF ord(q): cv2.destroyAllWindows() exit(0)显示界面如下CSI排线连接树莓派和摄像头如果你使用CSI连接树莓派和摄像头那么连接线是非常重要的1.树莓派端金手指面向HDIM(背向网线口)摄像头端金手指面向电路板2.连接树莓派输入以下命令进行测试该命令会调用摄像头然后本地保存一张图。libcamera-still -o test.jpg -t 2000 --nopreview如果无法保存显示超时重新接一下CSI线或者用橡皮擦把金手指擦一下。
延伸阅读

更多相关文章

2026/10/28 9:38:58

ok-ww 鸣潮自动战斗与一键日常使用指南:10 分钟跑通

ok-ww 鸣潮自动战斗与一键日常使用指南:10 分钟跑通 【免费下载链接】ok-wuthering-waves 鸣潮 后台自动战斗 自动刷声骸 一键日常 Automation for Wuthering Waves 项目地址: https://gitcode.com/GitHub_Trending/ok/ok-wuthering-waves ok-ww 是一个开源免…

2026/10/28 9:33:56

基于Springboot旅游景点订票系统【附源码+文档】

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/28 9:33:56

基于Springboot医院预约挂号系统【附源码+文档】

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/28 10:49:53

SylixOS驱动开发实战:从模块加载到LCD点亮的完整链路

简介:《SylixOS设备驱动程序开发1》面向具备一定操作系统基础、希望掌握 SylixOS 驱动开发的嵌入式工程师与学习者,系统讲解该实时操作系统下的驱动框架与内核机制。全书从驱动与操作系统的关系、ARM 处理器与教学平台入手,逐步展开并发与同步…

2026/10/28 10:49:53

西门子111报文详解:控制字、状态字与位映射调试指南

简介:这份《西门子111报文详解.pdf》面向工业自动化领域的电气工程师、PLC编程人员及运动控制调试人员,聚焦西门子驱动系统中111标准报文的通信机制与位定义解析,帮助读者理清报文结构、参数含义及与PLC的交互逻辑。资源包共1个PDF文件&#…

2026/10/28 10:49:53

TypeScript编译原理与性能优化实战指南

1. 为什么需要关注TypeScript编译实践三年前接手一个遗留JavaScript项目时,我深刻体会到没有类型系统维护大型前端项目的痛苦。当项目规模超过2万行代码后,变量类型不明确导致的运行时错误让团队每周都要花费大量时间调试。这正是我们转向TypeScript的关…

2026/10/28 10:49:53

AI工具如何提升学术文献阅读效率

1. 学术研究者的效率革命:当AI工具遇上文献阅读(开头段落自然引入主题,避免套路化表达) 深夜的实验室里,常能看到研究生们对着满屏PDF文档抓耳挠腮的场景。作为经历过论文攻坚阶段的研究者,我深刻理解文献阅…

2026/10/28 10:49:53

YOLOv10在3D打印质检中的应用与优化

1. 项目概述:当YOLOv10遇上3D打印质检去年帮某3D打印服务商部署质检系统时,他们车间主任拿着个布满纹路的齿轮模型问我:"这种层间开裂你们算法能抓出来吗?"当时用的还是YOLOv8,误检率高达30%。如今YOLOv10的…

2026/10/28 10:44:53

微软.NET与生成式AI整合实战指南

1. 项目概述:微软生成式AI与.NET的深度整合微软最新推出的《生成式人工智能初学者.NET 第二版》课程站,标志着这家科技巨头在AI教育领域的又一次重要布局。作为.NET开发者,我发现这个平台完美结合了微软两大技术栈的优势——成熟的.NET开发框…

2026/10/27 14:24:03

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/27 9:34:54

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/28 3:32:29

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/28 0:02:13

Python股票自动交易系统源码解析:从行情获取到风控的完整链路

简介:这份资源是面向高校计算机、金融相关专业毕业设计场景的完整项目源码包,主题为基于Python的股票自动交易系统,适合需要完成毕设选题、课程设计或自学金融量化交易开发的学生与开发者参考。压缩包共收录687个文件,整体约14.93…

2026/10/28 0:02:13

视酷酷信IM源码部署指南:Java 17+MySQL 8.0.33实战配置

简介:这是一套2024年亲测可部署的视酷酷信IM即时通讯系统源码,面向具备Java、OC、C#及Vue开发能力的技术人员,解决私有化即时通讯平台快速搭建与二次定制需求,尤其适用于需集成商城、保障数据主权的中小型企业或独立开发者。资源共…

2026/10/28 0:02:13

Python爬取百度迁徙数据:接口解析、批量采集与避坑指南

简介:这份资源是一个用Python爬取百度迁徙数据的脚本压缩包,面向具备Python基础、希望入门网络爬虫与数据解析的开发者,解决按日期获取全国热门城市人口迁徙数据的问题。包内共1个文件,为单个py脚本,压缩包约1KB&#…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑