Software de detección de rostros basado en OpenCV (incluido el código fuente de Python + interfaz de usuario + explicación gráfica detallada)

Demostración de funciones de software

Por favor agregue una descripción de la imagen

Resumen: 人脸检测El objetivo es encontrar las posiciones correspondientes de todas las caras en la imagen. La salida del algoritmo son las coordenadas del rectángulo circunscrito de la cara en la imagen, y también puede incluir información como posturas como ángulos de inclinación. Este artículo presenta el principio técnico de su implementación en detalle y, al mismo tiempo, brinda un Pythoncódigo de implementación completo, PyQTrealiza la interfaz de usuario y muestra la función de detección de rostros de imágenes, videos y cámaras. Este artículo proporciona tutoriales y código completo de Python para referencia y estudio por parte de socios interesados. Consulte el final del artículo para obtener información sobre cómo obtener archivos de recursos de código completos.

Haga clic para saltar al final del artículo "Documentos relacionados completos y código fuente" para obtener

---

1. Introducción

La detección de rostros (Face Detection) consiste en dar una imagen y averiguar las posiciones de todos los rostros en la imagen, generalmente enmarcados por un marco rectangular, la entrada es una imagen img y la salida son varias posiciones de marcos rectangulares que contienen rostros. Es la base del reconocimiento facial. La principal diferencia entre la detección facial y el reconocimiento facial es que la detección facial solo necesita detectar la posición del rostro en la imagen, mientras que el reconocimiento facial es después de detectar la posición del rostro, también necesita compararse con la posición del rostro en la base de datos. Haga coincidir los datos del rostro para identificar a qué persona específica pertenece el rostro detectado. Este documento implementa la detección de rostros y la visualización de la interfaz basada en OpenCV, y actualizará aún más el desarrollo de funciones relacionadas con el reconocimiento de rostros en el futuro.

La siguiente es una interfaz de software simple diseñada por el blogger, que puede realizar la función de detección de rostros de imágenes, videos y cámaras, y también brinda la función de guardar los resultados de detección de imágenes y videos. Los amigos interesados ​​pueden probarlo ellos mismos.

觉得不错的小伙伴,感谢点赞、关注加收藏!如果大家有任何建议或意见,欢迎在评论区留言交流!

La interfaz inicial del software se muestra en la siguiente figura:
inserte la descripción de la imagen aquí

2. Demostración del efecto del software

Primero, echemos un vistazo al efecto real de la detección de rostros a través de la animación. La función principal de este software es detectar la posición de los rostros en imágenes, videos e imágenes de la cámara. Los resultados del reconocimiento se muestran visualmente en la interfaz y las imágenes. El efecto de demostración es el siguiente.

2.1 Imagen de detección de rostros

Este software puede realizar la detección de rostros seleccionando un archivo de imagen usted mismo. Después de hacer clic en el icono del botón de selección de imagen para seleccionar una imagen, el resultado de la detección de rostros se mostrará directamente: incluido el número de rostros y la información de ubicación, y puede verificar el cara individual a través del cuadro desplegable El resultado de la detección, y puede hacer clic en el botón Guardar para guardar la imagen del resultado de la detección. La visualización de la interfaz de esta función se muestra en la siguiente figura:

Por favor agregue una descripción de la imagen

2.2 Videodetección de rostros

Este software puede seleccionar un video para la detección de rostros, haga clic en el botón de video para seleccionar el video que se detectará, el software detectará el rostro cuadro por cuadro y registrará los resultados de la detección en la tabla a continuación, y puede hacer clic en el botón Guardar para guardar El resultado de la detección de video. La visualización de la interfaz de esta función se muestra en la siguiente figura:
inserte la descripción de la imagen aquí

2.3 Cámara de detección de rostros

En escenarios de uso real, a menudo usamos la cámara del dispositivo para obtener imágenes en tiempo real y, al mismo tiempo, necesitamos detectar rostros en las imágenes, por lo que este artículo también implementa la función de detección de rostros de la cámara. Haga clic en el botón de la cámara para encender la cámara, el software muestra la imagen en tiempo real y comienza a detectar la posición de la cara en la imagen. La interfaz de esta función se muestra en la siguiente figura:
inserte la descripción de la imagen aquí

3. Introducción al principio de detección de rostros

3.1 Principios básicos

Hay dos tipos principales de algoritmos para la detección de rostros: basados ​​en conocimientos y basados ​​en estadísticas.
El método basado en el conocimiento utiliza principalmente el conocimiento previo para considerar el rostro humano como una combinación de características de órganos y detecta los rostros humanos de acuerdo con las características de los ojos, las cejas, la boca, la nariz y otros órganos y la relación de posición geométrica entre ellos. Métodos comúnmente utilizados: coincidencia de plantillas, características de la cara, formas y bordes
, características de textura, características de color.
El método basado en estadísticas considera la cara como un patrón completo: una matriz de píxeles bidimensional.Desde un punto de vista estadístico, un espacio de patrones faciales se construye a través de una gran cantidad de muestras de imágenes faciales, y si existe una cara se juzga de acuerdo con a la medida de similitud. Métodos comúnmente utilizados: análisis de componentes principales y caras propias, métodos de redes neuronales, máquinas de vectores de soporte, modelos ocultos de Markov, algoritmo Adaboost.

Este artículo utiliza principalmente el clasificador Haar de OpenCV para detectar rostros. El clasificador Haar es en realidad una aplicación del algoritmo Boosting. El clasificador Haar usa el algoritmo AdaBoost en el algoritmo Boosting. Simplemente conecta en cascada los clasificadores fuertes entrenados por el algoritmo AdaBoost, y usa alta eficiencia en la extracción de características subyacentes. Características rectangulares y métodos de mapas integrales.

Los puntos principales del algoritmo clasificador de Haar son los siguientes:
① Use funciones similares a las de Haar para la detección.
② Use la imagen integral (Imagen integral) para acelerar la evaluación de características similares a las de Haar.
③ Use el algoritmo AdaBoost para entrenar un clasificador fuerte que distinga entre caras y no caras.
④ Use la cascada de detección para conectar en cascada clasificadores fuertes para mejorar la precisión.

3.2 Use el detector en cascada de Haar para realizar la detección de rostros en las imágenes

# coding:utf-8
import cv2

# 绘图展示
def cv_show(name,img):
	cv2.imshow(name, img)
	cv2.waitKey(0)
	cv2.destroyAllWindows()

# 读取图片
img = cv2.imread('images/test1.jpg')
# cv_show('img',img)

# 转为灰度图
img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
# cv_show('gray', img_gray)

# 构造harr检测器
face_detector = cv2.CascadeClassifier('models/haarcascade_frontalface_default.xml')

# 对图像中的人脸进行检测
detections = face_detector.detectMultiScale(img_gray,scaleFactor=1.3)

# 解析并画出人脸方框
for x,y,w,h in detections:
	cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)

inserte la descripción de la imagen aquí

detectMultiScale(image[, scaleFactor[, minNeighbors[, flags[, minSize[, maxSize]]]]])
descripción del parámetro:
image: imagen que se detectará, generalmente una imagen en escala de grises para acelerar la detección
scaleFactor: establezca una relación de reducción, para La imagen se reduce gradualmente para detectar. Cuanto mayor sea la configuración del parámetro, más rápida será la velocidad de cálculo, pero puede pasar por alto un cierto tamaño de la cara. El valor predeterminado es 1,1. De hecho, este parámetro se puede configurar de acuerdo con el valor de píxel de la imagen. La velocidad de reducción de píxeles puede ser más rápida, generalmente entre 1 y 1,5.
minNeighbors: determina que un marco de cara debe tener al menos n valores candidatos, cuanto mayor sea la calidad, mejor (el valor predeterminado es 3),
minSize y maxSize se utilizan para limitar el tamaño del área objetivo obtenida. Es decir, el tamaño máximo y mínimo del marco de la cara, como minSize=(40,40), significa que el tamaño mínimo del marco de la cara no debe ser inferior a 40*40.

De acuerdo con la situación y las necesidades reales, los parámetros anteriores se pueden ajustar para lograr el mejor efecto de detección.

Basado en los principios anteriores, con el fin de facilitar la visualización y el aprendizaje. El bloguero finalmente desarrolló una interfaz de usuario completa que puede detectar rostros en imágenes, videos y cámaras, y probó todo el software en detalle. La interfaz de usuario completa, las imágenes y videos de prueba y los archivos de código se empaquetaron y cargaron, y los amigos interesados ​​pueden obtenerlos a través del enlace de descarga.
inserte la descripción de la imagen aquí

【método de obtención】

Todos los archivos de programa completos involucrados en este artículo: incluido el código fuente de Python, archivos de interfaz de usuario, etc. (vea la imagen a continuación), consulte el final del artículo para saber cómo obtenerlos:
inserte la descripción de la imagen aquí

Nota: El código se desarrolla utilizando Pycharm+Python3.8, el programa principal de la interfaz en ejecución es MainProgram.py, se puede ejecutar el script de imagen de prueba img_test.py, se puede ejecutar el script de cámara de prueba cameraTest.py, se puede ejecutar el script de video de prueba videoTest.py. Para asegurarse de que el programa se ejecute sin problemas, configure la versión del paquete de dependencia de Python de acuerdo con los requisitos.txt.

Siga la tarjeta de presentación a continuación [Algoritmo Axu y aprendizaje automático] y responda [Detección de rostros] para obtener el método de descarga


conclusión

Lo anterior es todo el contenido del software de detección de rostros desarrollado por el blogger. Debido a la capacidad limitada del blogger, es inevitable que haya omisiones. Espero que los amigos puedan criticar y corregir.
Si tiene alguna sugerencia o comentario sobre este artículo, ¡deje un mensaje en el área de comentarios para intercambiar!

Amigos que se sienten bien, gracias por sus me gusta, atención y colección! Continuaremos actualizando más contenido emocionante...

Supongo que te gusta

Origin blog.csdn.net/qq_42589613/article/details/130706051
Recomendado
Clasificación