Primeiro commit
63
app.py
Normal file
@ -0,0 +1,63 @@
|
||||
from flask import Flask, render_template, request, redirect, url_for, flash, send_from_directory
|
||||
import os
|
||||
import requests
|
||||
import math
|
||||
|
||||
app = Flask(__name__)
|
||||
app.secret_key = 'your_secret_key' # Troque para uma chave secreta segura
|
||||
|
||||
FOLDER_PATH = 'folder/faces' # Caminho para a subpasta com os rostos cortados
|
||||
API_URL = 'http://localhost:5000/cadastro' # URL da API de cadastro de rostos
|
||||
FILES_PER_PAGE = 8 # Grid de 2x4, ou seja, 8 arquivos por página
|
||||
|
||||
@app.route('/')
|
||||
def index():
|
||||
return redirect(url_for('listar_rostos'))
|
||||
|
||||
@app.route('/listar_rostos')
|
||||
@app.route('/listar_rostos/page/<int:page>')
|
||||
def listar_rostos(page=1):
|
||||
image_files = [f for f in os.listdir(FOLDER_PATH) if f.endswith('.jpg')]
|
||||
total_files = len(image_files)
|
||||
total_pages = math.ceil(total_files / FILES_PER_PAGE)
|
||||
|
||||
start = (page - 1) * FILES_PER_PAGE
|
||||
end = start + FILES_PER_PAGE
|
||||
images = image_files[start:end]
|
||||
|
||||
# Calcula a faixa de páginas a serem exibidas
|
||||
page_range = range(max(1, page-2), min(page+3, total_pages+1))
|
||||
|
||||
return render_template('listar_rostos.html', images=images, page=page, total_pages=total_pages, page_range=page_range)
|
||||
|
||||
@app.route('/cadastrar_pessoas', methods=['GET', 'POST'])
|
||||
def cadastrar_pessoas():
|
||||
if request.method == 'POST':
|
||||
name = request.form['name']
|
||||
selected_images = request.form.getlist('selected_images')
|
||||
if not selected_images or not name:
|
||||
flash('Por favor, selecione imagens e insira um nome.', 'danger')
|
||||
return redirect(url_for('cadastrar_pessoas'))
|
||||
|
||||
for image in selected_images:
|
||||
image_path = os.path.join(FOLDER_PATH, image)
|
||||
with open(image_path, 'rb') as img_file:
|
||||
files = {'image': img_file}
|
||||
data = {'name': name}
|
||||
response = requests.post(API_URL, files=files, data=data)
|
||||
|
||||
if response.status_code == 201:
|
||||
flash(f'{image} cadastrada com sucesso.', 'success')
|
||||
else:
|
||||
flash(f'Erro ao cadastrar {image}: {response.json().get("error", "Erro desconhecido")}', 'danger')
|
||||
|
||||
return redirect(url_for('listar_rostos'))
|
||||
|
||||
return render_template('cadastrar_pessoas.html')
|
||||
|
||||
@app.route('/faces/<filename>')
|
||||
def serve_image(filename):
|
||||
return send_from_directory(FOLDER_PATH, filename)
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run(host="0.0.0.0", debug=True, port=5001)
|
||||
BIN
face-demographics-walking-and-pause.mp4
Normal file
BIN
face-demographics-walking.mp4
Normal file
BIN
folder/faces/face_100_50.jpg
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
folder/faces/face_101_51.jpg
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
folder/faces/face_102_52.jpg
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
folder/faces/face_103_53.jpg
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
folder/faces/face_104_54.jpg
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
folder/faces/face_105_55.jpg
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
folder/faces/face_106_56.jpg
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
folder/faces/face_107_57.jpg
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
folder/faces/face_108_58.jpg
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
folder/faces/face_109_59.jpg
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
folder/faces/face_110_60.jpg
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
folder/faces/face_111_61.jpg
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
folder/faces/face_112_62.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_113_63.jpg
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
folder/faces/face_114_64.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_115_65.jpg
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
folder/faces/face_116_66.jpg
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
folder/faces/face_117_67.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_118_68.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_119_69.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_120_70.jpg
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
folder/faces/face_121_71.jpg
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
folder/faces/face_122_72.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_123_73.jpg
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
folder/faces/face_124_74.jpg
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
folder/faces/face_125_75.jpg
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
folder/faces/face_126_76.jpg
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
folder/faces/face_127_77.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_128_78.jpg
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
folder/faces/face_129_79.jpg
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
folder/faces/face_130_80.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_131_81.jpg
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
folder/faces/face_132_82.jpg
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
folder/faces/face_133_83.jpg
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
folder/faces/face_134_84.jpg
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
folder/faces/face_135_85.jpg
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
folder/faces/face_136_86.jpg
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
folder/faces/face_137_87.jpg
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
folder/faces/face_138_88.jpg
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
folder/faces/face_139_89.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_140_90.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_141_91.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_142_92.jpg
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
folder/faces/face_143_93.jpg
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
folder/faces/face_144_94.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_145_95.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_146_96.jpg
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
folder/faces/face_147_97.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_148_98.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_149_99.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_150_100.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_151_101.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_152_102.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_153_103.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_154_104.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_155_105.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_156_106.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_157_107.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_158_108.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_159_109.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_160_110.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_161_111.jpg
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
folder/faces/face_162_112.jpg
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
folder/faces/face_163_113.jpg
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
folder/faces/face_164_114.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_165_115.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_166_116.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_167_117.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_168_118.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_169_119.jpg
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
folder/faces/face_170_120.jpg
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
folder/faces/face_171_121.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_172_122.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_173_123.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_174_124.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_175_125.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_176_126.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_177_127.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_178_128.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_179_129.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_180_130.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_181_131.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_182_132.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_183_133.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_184_134.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_185_135.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_186_136.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_187_137.jpg
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
folder/faces/face_188_138.jpg
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
folder/faces/face_189_139.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_190_140.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_191_141.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_192_142.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_193_143.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_194_144.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_195_145.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
folder/faces/face_196_146.jpg
Normal file
|
After Width: | Height: | Size: 2.5 KiB |