在网络摄像头前被识别出该人时,我只想保存一张图像,但是在下面的代码中保存了很多图像,我该如何设置拍摄时间间隔?
while ((frameCapturado = camera.grab()) != null) {
imagemColorida = converteMat.convert(frameCapturado); //está colocando o frameCapturado dentro da imagem colorida
cvtColor(imagemColorida, imagemCinza, COLOR_BGRA2GRAY); //converte da colorida para escala de cinza
RectVector facesDetectadas = new RectVector();//armazena todas a faces detectadas passando na webcam
detectorFace.detectMultiScale(imagemCinza, facesDetectadas, 1.1, 2, 0, new Size(100, 100), new Size(500, 500)); //detecção em escala de cinza
for (int i = 0; i < facesDetectadas.size(); i++) { //entra no laço caso tenha reconhecido uma face
Rect dadosFace = facesDetectadas.get(i); //dadosFace recebe os dados da imagem que foi detectada, dentro do quadrado de detecção
rectangle(imagemColorida, dadosFace, new Scalar(0, 0, 255, 0)); //desenha o retangulo
Mat faceCapturada = new Mat(imagemCinza, dadosFace); //faceCapturada recebe somente os dados presentes dentro do quadrado da detecção
resize(faceCapturada, faceCapturada, new Size(160, 160));//redimensiona as imagens para ajudar no processo de reconhecimento e evitar erros
IntPointer rotulo = new IntPointer(1); //para identificar qual é rotulo da imagem, se é a pessoa 1 ou 2
DoublePointer confianca = new DoublePointer(1);
reconhecedor.predict(faceCapturada, rotulo, confianca); //quando executar o predict irá passar o rotulo(1 ou 2) e a confiança
String nome;
int predicao = rotulo.get(0); //resposta final, na posição 0(zero) se encontra o resultado, a qual classe a imagem pertence
if (predicao == -1) { //nao conseguiu identificar a pessoa
nome = "Desconhecido";
//imwrite("src\\desconhecidos\\" + nome + "." + contDesconhecidos + ".jpg", faceCapturada);
desconhecidos[contDesconhecidos] = nome + "-" + contDesconhecidos + "-" + data.toString();
System.out.println(desconhecidos[contDesconhecidos]);
contDesconhecidos++;
//Thread.sleep(intervalo);
cFrame.dispose();
} else {
//cFrame.dispose();
//salva na variável nome, o nome da pessoa que foi reconhecida e a data que esteve no local
nome = pessoas[predicao];
//+ " - " + confianca.get(0)
imwrite("src\\desconhecidos\\" + nome + contReconhecidos + ".jpg", faceCapturada);
reconhecidos[contReconhecidos] = nome + '-' + data.toString();
System.out.println(reconhecidos[contReconhecidos]);
/*//trecho abaixo responsavel pela codificação e descodificação da imagem para base 64
String imagePath = "src\\desconhecidos\\" + nome + contReconhecidos + ".jpg";
System.out.println("Codificação da imagem para base 64");
String base64ImageString = encoder(imagePath);
System.out.println("Base64ImageString = " + base64ImageString);
System.out.println("Decodificação da imagem da base 64");
decoder(base64ImageString, "src\\decodificado\\" + nome + contReconhecidos + "de.jpg");
*/
contReconhecidos++;
Thread.sleep(intervalo);
}
int x = Math.max(dadosFace.tl().x() - 10, 0);
int y = Math.max(dadosFace.tl().y() - 10, 0);
putText(imagemColorida, nome, new Point(x, y), FONT_HERSHEY_PLAIN, 1.4, new Scalar(0, 255, 0, 0));
}
if (cFrame.isVisible()) {
cFrame.showImage(frameCapturado);
}
}
cFrame.dispose();
camera.stop();
}
`