Quando se trata de detecção de face, devemos primeiro entender o classificador de recurso Haar. Para ser franco, o classificador HAAR é uma série de arquivos XML, que descrevem os valores característicos de várias partes do corpo humano, como rostos, olhos, etc. Os seguintes arquivos de recurso são fornecidos no OpenCV3.2.0:
HAARCASCADE_EYE.XML
HAARCASCADE_EYE_TREE_EYEGLASSES.XML
Haarcascade_frontalcatface.xml
Haarcascade_frontalcatface_extended.xml
Haarcascade_frontalface_alt.xml
Haarcascade_frontalface_alt_tree.xml
Haarcascade_frontalface_alt2.xml
Haarcascade_frontalface_default.xml
Haarcascade_fullbody.xml
HAARCASCADE_LEFTEYE_2SPLITS.XML
HAARCASCADE_LICENCE_PLACE_RUS_16STAGES.XML
Haarcascade_lowerbody.xml
Haarcascade_profileface.xml
HAARCASCADE_RETEYE_2SPLITS.XML
Haarcascade_russian_plate_number.xml
Haarcascade_smile.xml
Haarcascade_upperbody.xml
Ao carregar diferentes arquivos de recursos, o efeito de detecção correspondente pode ser alcançado.
Descrição do parâmetro DetectMultisCale Function em OpenCv3.2.0:
DetectMultisCale (Mat Image, Matofrect Objects, Double ScaleFactor, Int Minneighbors, Int Flags, Size MinSize, Size MaxSize)
Imagem: A imagem a ser detectada geralmente é escala de cinza (melhorando a eficiência)
Objetos: um grupo de vetores de caixa retangular de objetos detectados
ScaleFactor: o coeficiente de escala da janela de pesquisa em duas varreduras consecutivas. O padrão é 1,1, ou seja, cada janela de pesquisa se expande em 10% em sequência.
Minneighbors: o número mínimo de retângulos adjacentes que constituem o alvo de detecção (o padrão é 3)
sinalizadores: use o valor padrão ou use cv_haar_do_canny_pruning. Se configurado como cv_haar_do_canny_pruning, a função usará a detecção de arestas de bordas para excluir áreas com muitas ou poucas bordas, para que essas áreas geralmente não sejam a área em que a face está localizada
Minsize: o alcance mínimo da área -alvo obtida
MaxSize: o alcance máximo da área -alvo obtida
Código de amostra de detecção de rosto:
importar org.opencv.core.core; importar org.opencv.core.mat; importar org.opencv.core.matofrect; importar org.opencv.core.point; importação org.opencv.core.rect; import org.oPenc.Core.Scalar; import.oPencv.imecv.img.img.img.img.img.img.img.img.img.img.img.img.imG.EmOmOm; org.opencv.imgproc.imgproc; importar org.opencv.objDetect.CascadeClassifier; public class FacedEtect {public static void main (string [] args) {// TODO Método Auto-Gerado System.loadlibrary (Core.native_library_ame); System.out.println ("/nrunning FaceDeTector"); CascadeClassifier FACEDETECTER = new CascadeClassifier (); FACEDETECTOR.LOLL ("C: // Arquivos de programas // OpenCV // Fontes // Data // Haarcascades // Haarcascades // Haarcascades_frontalface_alt.xml"); Mat Image = imgcodecs.imread ("f: //1114.jpg"); Matofrect Facetections = new Matofrect (); faceTeTector.DetectMultisCale (imagem, FaceTeCtions); System.out.println (string.format ("detectado %s faces", Facetection.toarray (). Comprimento)); for (ret rect: FaceDeTection.ToArray ()) {imgproc.rectangle (imagem, novo ponto (ret.x, ret.y), novo ponto (rect.x + ret.width, ret.y + ret.height), novo escalar (0, 255, 0)); } String filename = "f: //ouput.jpg"; Imgcodececs.imwrite (nome do arquivo, imagem); }} Imagem de origem e diagrama de resultados:
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.