使用 Flask 和 Python 的网页中的网络摄像头

2024-03-06

我使用创建了一个人脸识别模型keras and tensorflow,现在我尝试使用 Flask 和 Python 将其转换为 Web 应用程序。我的要求是,我需要在网页上显示一个实时网络摄像头,通过单击按钮,它应该拍摄照片并将其保存到指定的目录,并且使用该图片,应用程序应该识别该人。如果在数据集中没有找到该人,则应在网页上显示一条消息,表明发现了未知身份。为了完成这项工作,我开始学习 Flask,之后当涉及到要求时,这对我来说非常困难。有人帮我解决这个问题。


您想要做的是使用网络摄像头 Stream 与 Flask 进行流式传输,并使用机器学习来处理它。 Flask 中 Web 服务器的主脚本将允许您加载 index.html 文件,然后通过 /video_feed 路径流式传输每个帧:

from flask import Flask, render_template, Response, jsonify
from camera import VideoCamera
import cv2

app = Flask(__name__)

video_stream = VideoCamera()

@app.route('/')
def index():
    return render_template('index.html')

def gen(camera):
    while True:
        frame = camera.get_frame()
        yield (b'--frame\r\n'
               b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n\r\n')

@app.route('/video_feed')
def video_feed():
     return Response(gen(video_stream),
                    mimetype='multipart/x-mixed-replace; boundary=frame')

if __name__ == '__main__':
    app.run(host='127.0.0.1', debug=True,port="5000")

然后,您需要 Video Camera 类,您将在其中处理每个帧,并可以在帧上进行所需的每个预测或处理。这相机.py file :

class VideoCamera(object):
    def __init__(self):
        self.video = cv2.VideoCapture(0)

    def __del__(self):
        self.video.release()        

    def get_frame(self):
        ret, frame = self.video.read()

        # DO WHAT YOU WANT WITH TENSORFLOW / KERAS AND OPENCV

        ret, jpeg = cv2.imencode('.jpg', frame)

        return jpeg.tobytes()

最后是在 html 文件中显示视频流的页面索引.html(在里面模板/文件夹,如果不存在则生成它):

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Video Stream</title>
  </head>
  <body>
  <img src="{{ url_for('video_feed') }}" />
  </body>
</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Flask 和 Python 的网页中的网络摄像头 的相关文章

随机推荐

  • 如何快速学习Java RMI [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个 Java 应用程序 我已经开发了一两年了 我想创建一组非常简单的接口 以后可能会增加复杂性 我可以使用它从另一个 JVM 例
  • Jmeter - 如何向计数器添加前缀。类似于随机变量

    目前 在随机变量中 我可以在变量的输出格式中添加前缀或后缀 然而 这个很好的功能不适用于简单的计数器控制器 每次使用变量时连接 string counter 对我来说并不是一个好的选择 因为我经常这样做 有没有办法以随机变量的方式实现前缀
  • 对内置数据类型使用前向声明

    我明白 只要有可能 我们就应该使用前向声明而不是包含来加快编译速度 我有课Person像这样 pragma once include
  • 如何将 TWSocket 的 OnDataAvailable() 事件推送到 Delphi 6 应用程序中的后台线程?

    我有一个 Delphi 6 应用程序 它使用 ICS 组件套件进行套接字通信 我有自己的服务器套接字 VCL 组件 当新会话可用时 它会创建客户端 TWSocket 套接字 我创建的客户端套接字确实将 Multithreaded 属性设置为
  • 如何一起使用SparkSession和StreamingContext?

    我正在尝试从本地计算机 OSX 上的文件夹流式传输 CSV 文件 我将 SparkSession 和 StreamingContext 一起使用 如下所示 val sc SparkContext createSparkContext spa
  • 我应该使用哪些 Maven 工件来导入 PowerMock?

    我需要添加哪些罐子到我的pom xml让 PowerMock 与 Mockito 一起工作 我有以下依赖项
  • Google.Apis.Requests.RequestError 需要登录 [401] 消息[需要登录] 位置

    因此 我从 Nuget 下载了 Cloud Storage 的 NET 客户端 Google Apis Storage v1 版本 1 8 1 10 使用开发人员控制台创建了一个项目 生成了 API 密钥 启用了计费 创建了一个存储桶 但是
  • 如何绑定 ListBoxItem 的索引

    我想将列表框项目的 z 索引绑定到它们的索引 理想情况下 我们会有
  • Clojure、方面、Defprotocol、Defrecord

    defprotocol IAnimal IAnimal report o println type o reporting n inner report o println type o out n defrecord Dog IAnima
  • 如何将 JSON 转换为 CSV 格式并存储在变量中

    我有一个可以在浏览器中打开 JSON 数据的链接 但不幸的是我不知道如何阅读它 有没有办法使用 JavaScript 将这些数据转换为 CSV 格式并将其保存在 JavaScript 文件中 数据如下 count 2 items title
  • 纹理不绘制

    我想在屏幕上绘制图像 但我得到的是黑色方块 但上面没有纹理 图像路径正确并已加载 因为矩形具有正确的大小 我有一个单独的类用于加载名为 Texture 的纹理 还有一个用于绘制名为 Sprite 的纹理的类 这是代码 Class Textu
  • 如何向用户请求联系人访问权限,然后建立并打开联系人?

    好的 我联系了我的手机 除了两件事外 它运行得很好 首先 它第一次失败 因为它要求我访问联系人 我怎样才能使它在用户授予对联系人的访问权限后添加它 其次 有没有办法打开联系人 以便用户在建立后可以查看它 这就是我所做的 IBAction a
  • 使 Horizo​​ntalScrollView 的子级与屏幕一样大?

    我解决这个问题的方法是为子视图创建一个自定义视图 然后为自定义视图重写 onMeasure 新的 onMeasure 将宽度和高度设置为尽可能大 问题是当你显示软键盘时and旋转手机 随着方向的改变和键盘的显示 onMeasure 将 最大
  • 如何读取用户的单个字符?

    有没有一种方法可以从用户输入中读取单个字符 例如 他们在终端按下一个键 然后返回 有点像getch 我知道 Windows 中有一个功能 但我想要跨平台的功能 以下是 ActiveState Recipes 站点的链接 其中介绍了如何在 W
  • Hadoop/Hive Collect_list 不包含重复项

    根据该帖子 Hive 0 12 Collect list https stackoverflow com questions 6445339 collect set in hive keep duplicates 我试图找到 Java 代码
  • 项目在 Visual Studio 2010 解决方案中不可用

    我创建了下面的工具来使用我们的非 Microsoft 版本控制中的现有项目文件夹创建 VS2010 解决方案 当代码运行时 您告诉它您的代码位于哪个文件夹中 您的解决方案需要转到哪个文件夹 然后接受要在您选择的文件夹中创建的解决方案名称 它
  • Android - 应用程序已被拒绝,因为它主要面向儿童

    我在 Adob e Animate for Kids 中制作了一个应用程序 该应用程序第一次被接受 几天后我在我的应用程序中添加了 Admob 广告 除此之外没有任何更改 但现在我的应用程序不接受 Play 商店 并且第一个版本仍然在线 谁
  • Python 中的常见陷阱[重复]

    这个问题在这里已经有答案了 时隔多年 今天我再次被可变的默认参数所困扰 除非需要 我通常不会使用可变的默认参数 但我想随着时间的推移我忘记了这一点 今天在应用程序中 我在 PDF 生成函数的参数列表中添加了 tocElements 现在每次
  • 如何在 Android 布局文件夹中定位 1280x720 WXGA720 分辨率(如新的 Galaxy Nexus)?

    在运行 4 0 3 Ice Cream Sandwich 的 Android 模拟器上以 WXGA720 分辨率测试我的应用程序时 我的应用程序从横向视图中的 layout normal land 854x480 文件夹和纵向视图中的 la
  • 使用 Flask 和 Python 的网页中的网络摄像头

    我使用创建了一个人脸识别模型keras and tensorflow 现在我尝试使用 Flask 和 Python 将其转换为 Web 应用程序 我的要求是 我需要在网页上显示一个实时网络摄像头 通过单击按钮 它应该拍摄照片并将其保存到指定