FRP调用本地摄像头完成远程拍照

python 复制代码
from flask import Flask, Response
import cv2

app = Flask(__name__)

# 基础文字回复
@app.route('/')
def hello_world():
    return '''
    <h1>你好啊世界</h1>
    <img src="/camera" width="640" />
    '''

# 摄像头拍照并返回图像
@app.route('/camera')
def capture_camera():
    # 尝试打开摄像头
    cap = cv2.VideoCapture(0)
    if not cap.isOpened():
        return "摄像头打开失败,请检查设备", 500
    
    # 读取一帧图像
    success, frame = cap.read()
    cap.release()  # 释放摄像头
    
    if not success:
        return "图像捕获失败", 500
    
    # 将图像转为 JPEG 格式字节流
    ret, buffer = cv2.imencode('.jpg', frame)
    if not ret:
        return "图像编码失败", 500
    
    # 返回图像数据
    return Response(buffer.tobytes(), mimetype='image/jpeg')

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=3344, debug=False)

使用步骤

  1. 安装依赖库(需提前安装 OpenCV):

    复制代码
    pip install flask opencv-python
  2. 运行程序

    复制代码
    python server.py
  3. 手机访问

    • 在手机浏览器输入 http://你的服务器IP:3344(本地测试用电脑内网 IP,公网需端口转发)

    • 页面会显示文字 "你好啊世界" 和摄像头实时拍摄的照片(每次刷新页面会更新)。


关键注意事项

  1. 摄像头权限

    • 如果运行在 Windows/Mac/Linux 本地,确保摄像头驱动正常且未被其他程序占用。

    • 云服务器(如腾讯云)无物理摄像头,此代码无法直接运行,需在本地设备测试。

  2. 延迟问题

    • 每次访问 /camera 会重新打开摄像头拍照,频繁刷新可能导致延迟。若需实时视频流,需改用 WebSocket 或 MJPEG 流(需修改代码逻辑)。
  3. 安全风险

    • 开放公网端口 3344 时,确保防火墙限制访问 IP,避免被恶意扫描。

效果示意图

  • 手机访问页面会显示类似如下内容(文字 + 摄像头图像):

    复制代码
    你好啊世界
    [此处显示摄像头拍摄的图片]
相关推荐
Strange_Head几秒前
《Linux系统网络协议》用 C 语言写一个最小 HTTP Server 与 Client——网络篇
网络·网络协议·http
无垠的广袤5 分钟前
【Titan RA8P1 Board】PyOCD 调试
单片机·嵌入式硬件·调试器
BackCatK Chen9 分钟前
STM32保姆级入门教程|第6章:定时器中断原理 + 精准LED闪烁(1s_2s_3s)实战(功能超详细+CubeIDE手把手)
stm32·stm32cubeide·定时器中断·嵌入式入门·tim2·led精准闪烁·中断回调函数
KhalilRuan9 分钟前
什么是KCP?QUIC?Websocket?
网络·websocket·网络协议
橙露29 分钟前
STM32 定时器与 PWM 输出:电机调速、LED 呼吸灯实战
stm32·单片机·嵌入式硬件
Arva .43 分钟前
RabbitMQ
网络·分布式·rabbitmq
kim_puppy1 小时前
TCP的三次握手,四次挥手
java·网络·tcp
Rsun045511 小时前
ConfigurableListableBeanFactory跟ApplicationContext作用
网络·网络协议·rpc
youcans_1 小时前
【FOC-MBD】(19)反 Park 坐标变换链路
stm32·单片机·嵌入式硬件·simulink·代码生成
国科安芯2 小时前
面向商业航天的高可靠电机控制系统:从环境约束到芯片实现
单片机·嵌入式硬件·架构·risc-v·安全性测试