基于 face_recognition 与 Django 的人脸识别服务案例

人脸识别技术近年来发展迅速,广泛应用于安防、社交媒体、身份验证等场景。本文将介绍如何结合 face_recognition 库和 Django 框架,搭建一个简单的人脸识别服务。在这个案例中,我们将实现一个用户上传图片并进行人脸识别的功能。

环境准备

首先,确保你已经安装了必要的库。可以使用以下命令安装 Djangoface_recognition

pip install Django face_recognition

同时,你需要安装 dlib 库(face_recognition 的依赖),在 Windows 系统下可能需要先安装 CMake 和 Visual Studio,具体请参考 dlib 的官方文档,可以直接有下面的命令进行安装:

pip install dlib

创建 Django 项目和应用

在命令行中,使用以下命令创建一个新的 Django 项目:

django-admin startproject face_recognition_project
cd face_recognition_project
django-admin startapp face_recognition_app

然后在 face_recognition_project/settings.py 中注册新创建的应用:

INSTALLED_APPS = [
    ...
    'face_recognition_app',
]

创建模型

我们需要一个模型来存储用户上传的人脸信息。在 face_recognition_app/models.py 中定义如下模型:

from django.db import models

class Person(models.Model):
    name = models.CharField(max_length=100)
    image = models.ImageField(upload_to='people/')

    def __str__(self):
        return self.name

记得在项目中添加文件上传的媒体配置,在 settings.py 中加入以下代码:

MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR / 'media'

然后在你项目的主 URL 配置 face_recognition_project/urls.py 中添加媒体文件支持:

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

创建表单

face_recognition_app/forms.py 创建一个表单,用于上传图片:

from django import forms
from .models import Person

class PersonForm(forms.ModelForm):
    class Meta:
        model = Person
        fields = ['name', 'image']

创建视图

face_recognition_app/views.py 中,我们将实现一个视图来处理文件上传和人脸识别:

import face_recognition
import numpy as np
from django.shortcuts import render, redirect
from .forms import PersonForm
from .models import Person

def upload_image(request):
    if request.method == 'POST':
        form = PersonForm(request.POST, request.FILES)
        if form.is_valid():
            person = form.save()
            # 进行人脸识别处理
            image_path = person.image.path
            # 加载图像并提取人脸特征
            image = face_recognition.load_image_file(image_path)
            face_encodings = face_recognition.face_encodings(image)
            if face_encodings:
                # 你可以在这里保存特征到数据库或者进行匹配
                print("人脸特征已提取")
            return redirect('success')
    else:
        form = PersonForm()
    return render(request, 'upload.html', {'form': form})

创建模板

face_recognition_app/templates/upload.html 中创建一个简单的表单:

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>人脸识别上传</title>
</head>
<body>
    <h1>上传人脸图片</h1>
    <form method="post" enctype="multipart/form-data">
        {% csrf_token %}
        {{ form.as_p }}
        <button type="submit">上传</button>
    </form>
</body>
</html>

配置 URL

face_recognition_app/urls.py 中配置 URL:

from django.urls import path
from .views import upload_image

urlpatterns = [
    path('upload/', upload_image, name='upload_image'),
]

然后在项目的主 URL 配置 face_recognition_project/urls.py 中包含该应用的 URL:

from django.urls import include, path

urlpatterns += [
    path('', include('face_recognition_app.urls')),
]

启动服务器

最后,运行 Django 服务器,进行测试:

python manage.py migrate
python manage.py runserver

通过浏览器访问 http://127.0.0.1:8000/upload/,你可以上传人脸图片并进行识别。

总结

本文介绍了如何使用 Django 和 face_recognition 库构建简单的人脸识别服务。通过上传人脸图片,我们可以提取人脸特征以供后续分析。可以根据需求对系统进行扩展,例如将人脸特征存储到数据库进行比对、设置用户管理系统等。希望本案例对你有所帮助!

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部