English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Recently, I led my students to carry out a URTP project design, which needs face recognition. Since the current OpenCV has reached2.X version, so I don't want to use the original1.X version's code, and the code existing on the Internet is1.X version's code, I tried to write a paragraph2.X version's code, after repeated consultation of materials, I finally tested it successfully(It is obvious2.X version's code is more complex than1.X's code is simpler), for everyone's reference, the code is as follows:(2017Year5Month12In python3,6,1Here is a simple modification)
import cv2 import numpy as np cv2.namedWindow("test")#Name a window cap=cv2.VideoCapture(1#Open1Camera success, frame = cap.read()#Read a frame of image, the previous return value is whether it is successful, and the latter return value is the image itself color = (0,0,0)#Set the color of the face box classfier=cv2.CascadeClassifier("haarcascade_frontalface_alt.xml")#Define classifier while success: success, frame = cap.read() size=frame.shape[:2#Get the size of the current frame color image image=np.zeros(size,dtype=np.float16#Define a grayscale image matrix with the same size as the current frame image image = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)#Convertir la imagen del cuadro actual en imagen en escala de grises (aquí hay un cambio) cv2.equalizeHist(image, image)#Histograma de igualización de imagen en escala de grises #Las siguientes tres líneas son la configuración del tamaño mínimo de la imagen divisor=8 h, w = size minSize=(int(w/divisor), int(h/divisor))#Se ha agregado una función de redondeo .detectMultiScale(image, 1,2, 2, cv2.CASCADE_SCALE_IMAGE,minSize)#Detección de caras if len(faceRects)>0:#Si la longitud del array de caras es mayor que 0 for faceRect in faceRects: #Dibujar cuadrado alrededor de cada cara x, y, w, h = faceRect cv2.rectangle(frame, (x, y), (x+w, y+h), color) cv2.imshow("test", frame)#Mostrar imagen key=cv2.waitKey(10) c = chr(key & 255) if c in ['q', 'Q', chr(27]): break cv2.destroyWindow("test")
Imágenes de ejemplo:
Este es el contenido completo del artículo, espero que ayude a su aprendizaje y que todos los que apoyen el tutorial griten más fuerte.
Declaración: Este artículo se ha obtenido de la red, pertenece al propietario original, el contenido se ha contribuido y subido por los usuarios de Internet, este sitio web no posee los derechos de propiedad, no se ha realizado un procesamiento editorial manual y no asume ninguna responsabilidad legal. Si encuentra contenido sospechoso de violación de derechos de autor, por favor envíe un correo electrónico a: notice#w3Declaración: El contenido de este artículo se ha obtenido de la red, pertenece al propietario original, el contenido se ha contribuido y subido por los usuarios de Internet, este sitio web no posee los derechos de propiedad, no se ha realizado un procesamiento editorial manual y no asume ninguna responsabilidad legal. Si encuentra contenido sospechoso de violación de derechos de autor, por favor envíe un correo electrónico a: notice#w