在这篇博文中,我们将使用 Flask 框架构建一个相机应用程序,我们可以在其中单击图片、录制视频、应用诸如灰度、负片和“仅人脸”之类的滤镜,就像出现在 Snapchat 上的滤镜一样。
文中为前端使用了一个非常基本的设计,因为该项目的主要动机是让自己熟悉 Flask 网络框架并在其中包括实时视频流。同样可以扩展以添加更多功能。
演示:
我们使用了线程、HTTP请求-响应、全局变量、错误处理和人脸检测等概念。让我们看看这一切是如何做到的。
前端
首先,前端是一个基本的 HTML 文件,带有用于获取输入的按钮和用于在后端进行预处理后显示输出帧的图像源标签。文件中的按钮将数据发布到服务器。该文件还显示了一些使用该应用程序的说明。该文件保存在项目目录的“模板”文件夹中。
<body>
<div class="container">
<div class="row">
<div class="col-lg-8 offset-lg-2">
<h2 class="mt-5">CAMERA APP by Hemanth Nag</h2>
<form method="post" action="{
{ url_for('tasks') }}">
<input type="submit" value="Stop/Start" name="stop" />
<input type="submit" value="Capture" name="click"/>
<input type="submit" value="Grey" name="grey" />
<input type="submit" value="Negative" name="neg" />
<input type="submit" value="Face Only" name="face" />
<input type="submit" value="Start/Stop Recording" name="rec" />
</form>
<img src="{
{ url_for('video_feed') }}" height="80%">
<h3 style="font-family:courier;">Instructions:</h3>
<ol style="font-family:courier;">
<li>Stop/Start--Toggle between stop or start live streaming</li>
<li>Capture--Take still-shot and save in the 'shots' directory</li>
<li>Grey--Toggle between grayscale and RGB output</li>
<li>Negative--Toggle between negative and RGB output</li>
<li>Face Only--Shows just your face if present(Toggle on/off)</li>
<li>Start/Stop Recording--Toggle between starting and stopping video recording</li>
</div>
</div>
</div>
</body>