Software de detecção de rosto baseado em OpenCV (incluindo código-fonte Python + interface de interface do usuário + explicação gráfica detalhada)

Demonstração da Função do Software

Adicione uma descrição da imagem

Resumo: 人脸检测O objetivo é encontrar as posições correspondentes de todos os rostos na imagem. A saída do algoritmo são as coordenadas do retângulo circunscrito do rosto na imagem, podendo também incluir informações como posturas como ângulos de inclinação. Este artigo apresenta o princípio técnico de sua implementação em detalhes e, ao mesmo tempo, fornece um Pythoncódigo de implementação completo, PyQTrealiza a interface da interface do usuário e exibe a função de detecção de rosto de fotos, vídeos e câmeras. Este artigo fornece código Python completo e tutoriais para referência e estudo por parceiros interessados. Veja no final do artigo como obter arquivos de recursos de código completos.

Clique para pular para o final do artigo "Completar documentos relacionados e código-fonte" para obter

---

1. Introdução

Detecção de rosto (Face Detection) é dar uma imagem e descobrir as posições de todos os rostos na imagem, geralmente emoldurados por um quadro retangular, a entrada é uma imagem img e a saída são várias posições de quadro retangular contendo rostos. É a base do reconhecimento facial. A principal diferença entre a detecção facial e o reconhecimento facial é que a detecção facial só precisa detectar a posição do rosto na imagem, enquanto o reconhecimento facial ocorre após a detecção da posição do rosto, também precisa ser comparado com a posição do rosto no banco de dados. Combine os dados do rosto para identificar a qual pessoa específica o rosto detectado pertence. Este artigo implementa detecção de face e exibição de interface com base no OpenCV e atualizará ainda mais o desenvolvimento da função relacionada ao reconhecimento de face no futuro.

O seguinte é uma interface de software simples projetada pelo blogueiro, que pode realizar a função de detecção de rosto de fotos, vídeos e câmeras, e também fornece a função de salvar os resultados da detecção de fotos e vídeos. Amigos interessados ​​podem tentar eles mesmos.

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

A interface inicial do software é mostrada na figura abaixo:
insira a descrição da imagem aqui

2. Demonstração do efeito de software

Primeiro, vamos dar uma olhada no efeito real da detecção de rosto por meio da animação. A principal função deste software é detectar a posição dos rostos em fotos, vídeos e imagens da câmera. Os resultados do reconhecimento são exibidos visualmente na interface e nas imagens. O efeito de demonstração é o seguinte.

2.1 Detecção de face de imagem

Este software pode executar a detecção de rosto selecionando um arquivo de imagem por você. Depois de clicar no ícone do botão de seleção de imagem para selecionar uma imagem, o resultado da detecção de rosto será exibido diretamente: incluindo o número de rostos e informações de localização, e você pode verificar o face individual através da caixa suspensa O resultado da detecção e você pode clicar no botão salvar para salvar a imagem do resultado da detecção. O display da interface desta função é mostrado na figura abaixo:

Adicione uma descrição da imagem

2.2 Detecção de face de vídeo

Este software pode selecionar um vídeo para detecção de rosto, clique no botão de vídeo para selecionar o vídeo a ser detectado, o software detectará o rosto quadro a quadro e registrará os resultados da detecção na tabela abaixo, e você pode clicar no botão salvar para salvar O resultado da detecção de vídeo. O display da interface desta função é mostrado na figura abaixo:
insira a descrição da imagem aqui

2.3 Detecção de face da câmera

Em cenários de uso real, geralmente usamos a câmera do dispositivo para obter imagens em tempo real e, ao mesmo tempo, precisamos detectar rostos nas imagens; portanto, este artigo também implementa a função de detecção de rosto da câmera. Clique no botão da câmera para ligar a câmera, o software exibe a imagem em tempo real e começa a detectar a posição do rosto na imagem. A interface desta função é mostrada na figura abaixo:
insira a descrição da imagem aqui

3. Introdução ao princípio da detecção facial

3.1 Princípios Básicos

Existem dois tipos principais de algoritmos para detecção facial: baseados em conhecimento e baseados em estatísticas.
O método baseado em conhecimento usa principalmente o conhecimento prévio para considerar o rosto humano como uma combinação de características de órgãos e detecta rostos humanos de acordo com as características dos olhos, sobrancelhas, boca, nariz e outros órgãos e a relação posicional geométrica entre eles. Métodos comumente usados: correspondência de modelo, recursos de face, formas e arestas
, recursos de textura, recursos de cor.
O método baseado em estatísticas considera a face como um padrão completo - uma matriz de pixel bidimensional. para a medida de similaridade. Métodos comumente usados: análise de componentes principais e autofaces, métodos de redes neurais, máquinas de vetores de suporte, modelos ocultos de Markov, algoritmo Adaboost.

Este artigo usa principalmente o classificador Haar do OpenCV para detectar faces. O classificador Haar é, na verdade, uma aplicação do algoritmo Boosting. O classificador Haar usa o algoritmo AdaBoost no algoritmo Boosting. Ele apenas coloca em cascata os classificadores fortes treinados pelo algoritmo AdaBoost e usa alta eficiência na extração de recursos subjacentes. Recursos retangulares e métodos de mapas integrais.

Os pontos principais do algoritmo do classificador de Haar são os seguintes:
① Use recursos do tipo Haar para detecção.
② Use a imagem integral (Integral Image) para acelerar a avaliação de características do tipo Haar.
③ Use o algoritmo AdaBoost para treinar um classificador forte que distingue entre faces e não faces.
④ Use cascata de triagem para agrupar classificadores fortes em cascata para melhorar a precisão.

3.2 Use o detector de cascata Haar para realizar a detecção de rosto em fotos

# 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)

insira a descrição da imagem aqui

detectMultiScale(image[, scaleFactor[, minNeighbors[, flags[, minSize[, maxSize]]]]])
descrição do parâmetro:
image: imagem a ser detectada, geralmente uma imagem em tons de cinza para acelerar a detecção
scaleFactor: define uma taxa de redução, para A imagem é gradualmente reduzida para detectar. Quanto maior a configuração do parâmetro, mais rápida a velocidade de cálculo, mas pode perder um certo tamanho do rosto. O padrão é 1.1. Na verdade, este parâmetro pode ser definido de acordo com o valor do pixel da imagem. A velocidade de redução do pixel pode ser mais rápida, geralmente entre 1 e 1,5.
minNeighbors: Determina que uma moldura facial deve ter pelo menos n valores candidatos. Quanto maior a qualidade, melhor (o padrão é 3).
minSize e maxSize são usados ​​para limitar o tamanho da área de destino obtida. Ou seja, o tamanho máximo e mínimo da moldura da face, como minSize=(40,40), significa que o tamanho mínimo da moldura da face não deve ser inferior a 40*40.

De acordo com a situação e as necessidades reais, os parâmetros acima podem ser ajustados para obter o melhor efeito de detecção.

Com base nos princípios acima, a fim de facilitar a exibição e aprendizagem. O blogueiro finalmente desenvolveu uma interface de interface do usuário completa que pode detectar rostos em fotos, vídeos e câmeras, e testou todo o software em detalhes. A interface de interface do usuário completa, fotos e vídeos de teste e arquivos de código foram todos empacotados e carregados, e os amigos interessados ​​podem obtê-los por meio do link de download.
insira a descrição da imagem aqui

【método de obtenção】

Todos os arquivos de programa completos envolvidos neste artigo: incluindo código-fonte python, arquivos de interface do usuário etc. (veja a figura abaixo), consulte o final do artigo para saber como obtê-los:
insira a descrição da imagem aqui

Nota: O código é desenvolvido usando Pycharm+Python3.8, o programa principal da interface em execução é MainProgram.py, o script de imagem de teste pode ser executado img_test.py, o script de câmera de teste pode ser executado cameraTest.py, o script de vídeo de teste pode ser executado videoTest.py. Para garantir que o programa seja executado sem problemas, configure a versão do pacote de dependência do Python de acordo com o arquivo requirements.txt.

Siga o cartão de visita abaixo [Axu Algorithm and Machine Learning] e responda [Face Detection] para obter o método de download


conclusão

O conteúdo acima é todo o conteúdo do software de detecção facial desenvolvido pelo blogueiro. Devido à capacidade limitada do blogueiro, é inevitável que haja omissões. Espero que os amigos possam criticar e corrigir.
Se você tiver alguma sugestão ou comentário sobre este artigo, deixe uma mensagem na área de comentários para troca!

Amigos que se sentem bem, obrigado pelos vossos gostos, atenção e recolhimento! Conteúdo mais emocionante continuará a ser atualizado...

Acho que você gosta

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