Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdio.h>
- #include <conio.h>
- #include <string.h>
- //#include <opencv2/cv.h>
- #include <opencv2/highgui/highgui.hpp>
- int main() {
- IplImage* image, image2;
- char caminho[9999];
- int i, j, k, classe = 0, l, m, n;
- float teste;
- FILE * fp;
- errno_t err;
- //*** CRIA O ARQUIVO ARFF E SALVA O CABEÇALHO ***
- //fp = fopen("baseLBP.arff", "w");
- err = fopen_s(&fp, "baseLBP.arff", "w");
- //fprintf(fp, "%base de teste criada por Alessandro and Zacarias para a disciplina de PDI - Engenharia de Software UEPG\n\n");
- fprintf(fp, "@relation imgs_teste_lbp\n\n");
- for (i = 0; i<256; i++)
- fprintf(fp, "@attribute At%i numeric\n", (i / 256));
- fprintf(fp, "@attribute Class {1,2,3,4,5,6,7,8,9,10}\n\n");
- fprintf(fp, "@DATA\n");
- for (i = 0; i<2; i++) {
- //sprintf(caminho, "C:\\Downloads\\image\\%d.jpg", i);
- sprintf_s(caminho, 9999, "C:\\Downloads\\image\\%d.jpg", i);
- image = cvLoadImage(caminho, 0);
- float h[256];// vetor de features com 256 valores disponiveis
- for (n = 0; n<256; n++) h[n] = 0.0; //inicializa vetor de features
- //*** VERIFICA SE EH UMA NOVA CLASSE (TIPO DA IMAGEM)***
- if (i % 100 == 0) { //a cada 100 muda a categoria das fotos
- classe = classe + 1;
- }
- int lbp[3][3];//vetor do lbp
- int lbpBinario[3][3];//vetor do lbp binario
- int largura = image->width - 4;
- int altura = image->height - 4;
- for (j = 0; j<largura; j++) {//vamos percorrer toda a imagem passando e criando a mascara, tem o -1 para pular a ultima linha de pixel
- for (l = 0; l<3; l++) { //zera lbp
- for (n = 0; n<3; n++) {
- lbp[l][n] = 0;
- }
- }
- for (l = 0; l<3; l++) { //zera lbpbinario
- for (n = 0; n<3; n++) {
- lbpBinario[l][n] = 0;
- }
- }
- for (k = 0; k<altura; k++) {
- for (l = 0; l<3; l++) { //pega a matrix 3X3 da imagem com os vales de cinza
- for (n = 0; n<3; n++) {
- CvScalar v;
- v = cvGet2D(image, k + l, +n);
- lbp[l][n] = (int)v.val[0];
- }
- }
- int central = lbp[1][1];//pega o valor central para ser comparado e gerar a matriz binaria
- for (l = 0; l<3; l++) {
- for (n = 0; n<3; n++) {
- if (lbp[l][n] >= central) {
- lbpBinario[l][n] = 1;
- }
- else {
- lbpBinario[l][n] = 0;
- }
- }
- }
- central = 0;//agora vai pegar os binarios e trasformar no novo decimal que sera o novo valor da cadeia LBP, gambiarra para trasnformar um decimal que eh `binario` em decimarl
- central = central + (128 * lbpBinario[0][0]);
- central = central + (64 * lbpBinario[0][1]);
- central = central + (32 * lbpBinario[0][2]);
- central = central + (16 * lbpBinario[1][2]);
- central = central + (8 * lbpBinario[2][2]);
- central = central + (4 * lbpBinario[2][1]);
- central = central + (2 * lbpBinario[2][0]);
- central = central + (1 * lbpBinario[1][0]);
- h[central]++; // histograma LBP
- }
- }
- // Normalização
- for (n = 0; n<256; n++)
- h[n] = h[n] / (largura * altura);
- // Salve em arquivo
- for (n = 0; n<256; n++) {
- fprintf(fp, "%f,", (h[n]));
- }
- // Salva a classe
- fprintf(fp, "%d\n", classe);
- }
- fclose(fp);
- return 0;
- }
Advertisement