Array Java

8 respostas
java
R

E aí pessoal, tudo bem?

Então, eu tô fazendo um sistema de reconhecimento facial, e só falta isso pra eu finalizar tudo. Eu tenho o seguinte código:

IntPointer rotulo = new IntPointer(1);
DoublePointer confianca = new DoublePointer(1);
reconhecedor.predict(faceCapturada, rotulo, confianca);
int predicao = rotulo.get(0);
String nome;
if (predicao == -1) {
nome = "Desconhecido";
} else {
nome = pessoas[predicao] + " - " + confianca.get(0);
campoid.setText(String.valueOf(predicao));
rec();
}
int x = Math.max(dadosFace.tl().x() - 10, 0);
int y = Math.max(dadosFace.tl().y() - 10, 0);
putText(imagemCamera, nome, new Point(x, y), FONT_HERSHEY_PLAIN, 1.7, new Scalar(0, 255, 0, 2));

E mais em cima, eu tenho no metódo “rec” eu tenho o array mesmo (codigo resumido):

while (conecta.rs.next()) {
camponome.setText(conecta.rs.getString(1));
campoidade.setText(conecta.rs.getString(2));
campoemail.setText(conecta.rs.getString(3));
campobloco.setText(conecta.rs.getString(5));
campoapto.setText(conecta.rs.getString(6));
campocondominio.setText(conecta.rs.getString(7));
System.out.println("Pessoa idêntificada como: " + conecta.rs.getString(1));
System.out.println("---------------");

Array identificacao = conecta.rs.getArray(2);
String[] pessoas = (String[]) identificacao.getArray();
                            
for (int i = 0; i < pessoas.length; i++) {
System.out.println(pessoas[i]);
}
System.out.println("");
}

Motivo de eu ter feito separado: Eu fiz um swing worker, e isso facilita a não ficar travando a aplicação.

Meu problema e minha dúvida: O meu “pessoas” onde tá o If, não reconhece o “pessoas” que tá no “rec”, como posso fazer pra deixar o pessoas visível pra tudo? Eu tentei usar global mas não funciona tbm…

8 Respostas

M

O pessoas que ta no rec é diferente, você fez: String[] pessoas = (String[]) identificacao.getArray(); ai foi criado outro ‘pessoas’, se quer usar o mesmo tira o String[]

Com global você diz o que? Atributo da classe?

R

Sim, exemplo:

public class ReconhecimentoJavaCV extends javax.swing.JFrame {

    private DaemonThread myThread = null;
    VideoCapture webSource = null;
    String caminho;

    ConexaoBanco conecta = new ConexaoBanco();

    BytePointer mem = new BytePointer();
    int numeroAmostras = 25;
    int amostra = 1;

    Array identificacao;
    String[] pessoas;

Eu me expressei mal, eu quero usar o string [] pessoas, no "nome = pessoas [predicao]...

M

Qual a mensagem que da?

Acho que é pq pessoas não foi inicializada

R

Diz que precisa do “throws Exception”. E se eu inicializo ele no construtor, praticamente eu vou precisar colocar todo o meu método de novo. E mesmo assim não vou conseguir usar esse Array em outro lugar

M

Pq vc n coloca throws Exception ou try/catch?

R

Nas variaveis globais ele não aceita o try catch, só no construtor.
nem o throws

D

Primeira opção:

/* String[] */ pessoas = (String[]) identificacao.getArray();

e

// nome = pessoas[predicao] + " - " + confianca.get(0);
// campoid.setText(String.valueOf(predicao));
rec();
nome = pessoas[predicao] + " - " + confianca.get(0);
ampoid.setText(String.valueOf(predicao));

Segunda opção:

public String[] rec() {
  /* .... */
  return pessoas;
}

e

// nome = pessoas[predicao] + " - " + confianca.get(0);
// campoid.setText(String.valueOf(predicao));
pessoas = rec(); // ou String[] pessoas = rec();
nome = pessoas[predicao] + " - " + confianca.get(0);
ampoid.setText(String.valueOf(predicao));
R

Sem sucesso. Valeu, acho que vou ficar sem essa parte mesmo. Valeu!!

Criado 28 de junho de 2018
Ultima resposta 28 de jun. de 2018
Respostas 8
Participantes 3