Creare uno script di Face Detection con Python

Uno script in grado di riconoscere le facce delle persone da un’immagine, sembra qualcosa di veramente difficile da realizzare, specialmente per un programmatore non esperto.

Tuttavia oggi vi mostreremo, come creare uno script di Face Detection con Python, utilizzando la libreria OpenCv.

La libreria OpenCv

OpenCV è una libreria enorme usata per il machine learning e per l’elaborazione delle immagini.

Iniziamo con l’installazione di OpenCV:

pip install opencv-python

A questo punto possiamo scaricare il file XML contente i dati, direttamente su OpenCv.

Fatto questo abbiamo tutti gli strumenti che ci occorrono per poter creare uno script di Face Detection con Python.

Importiamo OpenCv in Python (modulo cv2) e carichiamo il file XML citato precedente tramite queste linee di codice:

import cv2
cascade_classifier = cv2.CascadeClassifier("file_cv2_default.xml")

A questo punto scegliamo un’immagine per poter testare il nostro algoritmo per il riconoscimento facciale, ma attenzione però perchè la libreria che stiamo usando è in grado di fare il riconoscimento, solo su immagini in scala di grigi.

Per ovviare questo possiamo comunque utilizzare una funzione di OpenCv, per cui creiamo un oggetto per la nostro foto di prova ed utilizziamo la funzione cvtColor per poterla utilizzare nella scala di grigi:

photo = cv2.imread("photo_sample.png")
photo_gray = cv2.cvtColor(photo, cv2.COLOR_BGR2GRAY)

Fatto questo adesso possiamo utilizzare il metodo detectMultiScale del classificatore importato prima nella variabile cascade_classifier:

faces = cascade_classifier.detectMultiScale(photo_gray, 1.1, 4)

I 3 parametri che il metodo richiede sono:

  • foto in scala di grigi (la nostro photo_sample.png che abbiamo poi convertito con il metodo cvtColor di OpenCv);
  • un fattore di scala usato dal classificatore Haar-Cascade, per realizzare una rappresentazione dell’immagine da analizzare e per fare il riconoscimento facciale vero e proprio;
  • numero di regioni da considerare per il riconoscimento facciale. Un numero più alto permette di riconoscere meno volti, ma con maggiore precisione, mentre invece un numero più basso permette di riconoscere più volti, ma con una precisione inferiore.

Il risultato del nostro script di Face Detection

A questo punto non ci resta che scrivere le ultime righe del nostro script di Face Detection con Python e di goderci il risultato.

La variabile faces contiene i risultati del metodo detectMultiScale, che corrispondo a delle coordinate. Per cui possiamo disegnare dei rettangoli attorno ai volti che sono stati riconosciuti dal nostro algoritmo di riconoscimento facciale:

for(x, y, width, height) in faces:
    cv2.rectangle(photo, (x,y), (x+width, y+height), (0, 0, 255), 3)
cv2.imshow('photo', photo)
cv2.waitKey()

Bene con queste poche righe di codice abbiamo terminato il nostro script di Face Detection fatto con Python. Semplice no?

I migliori framework PHP del 2021

Il PHP è senz’altro il linguaggio di programmazione più utilizzato per realizzare un progetto sul web. Ma quando dobbiamo sviluppare un applicativo di grandi dimensioni e dobbiamo lavorare in un team, diventa fondamentale organizzare correttamente il codice.

Per facilitare questo compito sono nati i framework, che consentono ai programmatori di organizzare i file secondo una certa logica. In questo modo gli sviluppatori che conoscono il framework utilizzato potranno intervenire molto più rapidamente sul progetto.

Per il PHP in particolare esistono tantissimi framework diversi che hanno ovviamente i propri vantaggi e i propri svantaggi. Noi nel corso degli anni ne abbiamo provati ed utilizzati diversi, sia per esigenze dei nostri clienti che per curiosità. Così oggi vi daremo la nostra opinione su quali sono i migliori framework PHP del 2021.

Per trovare quali sono i migliori framework PHP del 2021 abbiamo deciso di provare a creare una piccola applicazione CRUD con i principali framework PHP. I framework che abbiamo preso in considerazione sono: Zend Framework, Laravel, Yii Framework, Symphony, CodeIgniter, CakePHP.

ZEND FRAMEWORK
Zend Framework è stato uno dei primi framework che abbiamo utilizzato per programmare un software in PHP quando ancora era alla sua prima versione, mentre oggi si trova alla versione 3.

LARAVEL
Laravel è di certo il framework più utilizzato al momento.

YII FRAMEWORK
Questo framework è una via di mezzo tra symphony e laravel, ma non ci ha convinto appieno.

SYMPHONY
Nonostante sia ben strutturato, risulta essere un po’ complesso nella creazione di alcune funzionalità.

CODEIGNITER
Un framework molto semplice e facilissimo da utilizzare. Sicuramente ottimo per iniziare ad approcciarsi al mondo dei framework PHP, ma non adatto a situazioni più complesse.

CAKEPHP
Questo è uno dei framework più longevi ed una struttura simile a quella di Laravel, però viene utilizzato sempre meno dagli sviluppatori

Creare un sistema di login con PHP e MySQL

La funzione di login ad un sito web è una funzione basilare, che viene richiesta in moltissimi progetti e in questo articolo vediamo come creare un semplice sistema di login, usando PHP e MySQL.

Immaginiamo di avere una tabella MySQL chiamata “Users” dentro il database “Progetto”.

I campi della tabella “Users” saranno: id, email (varchar 50), password (varchar 50), nome (varchar 25), cognome (varchar 25), data_registrazione (timestamp NOT NULL), ultimo_accesso (timestamp NULL).

Creiamo innanzitutto un file di connessione al database, immaginando di avere un utente “root” che utilizza come password “root”.

Creiamo quindi un file PHP che chiameremo database.php:

<?php
$mysqli = new mysqli('localhost', 'root', 'root', 'ultimo');
if($mysqli->connect_errno){ die("Errore di connessione al database"); }

Creiamo ora un form di login HTML con i campi email e password:

<html>
<head>
<title>Login Test</title>
</head>
<body>
<form method="post" action="login.php">
<label>Email</label>
<input type="email" name="email">
<label>Password</label>
<input type="password" name="password">
<input type="submit" value="Login">
</form>
</body>
</html>

Adesso quello che ci rimane da fare è creare il file di login vero e proprio, che leggerà i dati che vengono inviati dal form HTML che abbiamo appena creato:

<?php
require_once("database.php");
if(isset($_POST['email']) && $_POST['email'] && isset($_POST['password']) && $_POST['password']){
$email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
$password = filter_var($_POST['password'], FILTER_SANITIZE_STRING);
if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
die("Inserire una password valida");
}
}