Escolar Documentos
Profissional Documentos
Cultura Documentos
if (strcmp(buff, "@data") == 0) { }
int inst=1, actual;
while (true) { Gera uma imagem de um digito a partir de uma matriz
for (int i=0; i<64; i++)
if (fscanf(arqTeste, "%d,", &V[inst][i]) == EOF)
break; //dada uma matriz que representa o digito, cria uma imagem
if (fscanf(arqTeste, "D%d\n", &actual) == EOF) void criaDigitoImagem(IplImage *digito, int m[DIM][DIM]) {
break; for (int i=0; i<DIM; i++) {
inst++; for (int j=0; j<DIM; j++) {
}
printf("lidos %d instancias no arquivo de teste\n", inst-1); //monta a imagem com ZOOM
break; for (int dx=0; dx<ZOOM; dx++)
} for (int dy=0; dy<ZOOM; dy++)
} digito->imageData[i*ZOOM + dx + (j*ZOOM + dy)*digito->widthStep] =
255
//gera,para cada classe, uma matriz com os digitos acertados - (unsigned char) 255*((double)m[j][i]/16.0);
for (int c=0; c<MAXCLASS; c++) {
printf("ACC_C%d=[", c); }
for (int i=0; i<TACERTOS[c]; i++) { }
int inst = ACERTOS[c][i]; }
for (int j=1; j<64; j++) {
printf("%d ", V[inst][j]); //renderiza um digito, salva em arquivo e mostra na tela
} void renderizaDigito(int inst, char *prefixoNomeArq, bool mostrarTela) {
printf(";\n");
} if (inst > TINST || inst <=0) {
printf("]\n\n"); printf("valor invalido para instancia, nao renderizou.");
} return;
}
//gera um script com vetores para cada digito errado por classe
for (int c=0; c<MAXCLASS; c++) { char outfname[255];
for (int i=0; i<TERROS[c]; i++) { IplImage *digito = cvCreateImage(cvSize(8*ZOOM, 8*ZOOM), IPL_DEPTH_8U, 1);
printf("ERR_C%d_%d=[", c, i); //rotina que processa a matriz do digito
int inst = ERROS[c][i]; //if (mostrarTela)
for (int j=1; j<64; j++) { // mostraDigitoTexto(D[inst], M[inst]);
printf("%d ", V[inst][j]);
} criaDigitoImagem(digito, M[inst]);
printf("]\n\n");
} //mostra a imagem na tela
} if (mostrarTela) {
cvNamedWindow("mainWin", CV_WINDOW_AUTOSIZE);
//gera o calculo das distancias de mahalanobis para cada digito errado, por cvMoveWindow("mainWin", 8, 8);
classe. cvShowImage("mainWin", digito);
for (int c=0; c<MAXCLASS; c++) { cvWaitKey(0);
} if (parar)
break;
//escreve no arquivo
sprintf(outfname, "%s/%s.bmp", DIR_OUT_BASE, prefixoNomeArq); actual--;
cvSaveImage(outfname, digito); predicted--;
//libera imagem PREDICTED[inst] = predicted;
cvReleaseImage(&digito); //monta uma lista de acertos e erros com o id da instancia
if (actual == predicted) {
} ACERTOS[actual][TACERTOS[actual]++] = inst;
} else {
//mostra a matriz que representa o digito na tela em modo texto ERROS[actual][TERROS[actual]++] = inst;
void mostraDigitoTexto(int d, int m[DIM][DIM]) { }
printf("D=%d\n", d); }
for (int i=0; i<DIM; i++) {
for (int j=0; j<DIM; j++) break;
printf("%02d ", m[i][j]); }
printf("\n");
} }
printf("\n\n"); fclose(arqClass);
}
}
Carrega arquivo com as classificações
//carrega em memoria a classificacao feita pelo weka.
void carregaClassificacao() {
char *arqNomeClass = ARQUIVOS_CLASSIF_MAHALA[METHOD][0];