void Comparador::ComparaImagens(Mat &indicacoes, Mat a, Mat b, bool simples, vector<Vaga> &vagas) { Mat D = Diferenca(b, a, 0.1, 1); VerificaEstado(D, vagas, simples, a, b); indicacoes = Mat::zeros(indicacoes.size(), indicacoes.type()); for (int i = 0; i < vagas.size(); i++) { Scalar cor = Scalar(255, 0, 0); if (vagas[i].ocupada) { cor = Scalar(0, 0, 255); } //circle(indicacoes, vagas[i].limites., 1, cor); rectangle(indicacoes, vagas[i].limites, cor, -1); } }
int main(){ char labelConj; // rotulo do conjunto empregado nas operacoes int erro; // flag de erro na criacao dos conjuntos int Opcao; // operacao escolhida pelo usuario Conjunto *A, *B, *C; elem valor, min, max; // conjunto A A = CriaConjVazio(&erro); if (erro){ printf("Erro de alocacao!\n"); exit(1); } // conjunto B B = CriaConjVazio(&erro); if (erro){ printf("Erro de alocacao!\n"); exit(1); } // conjunto C onde serao armazenados os resultados das operacoes C = CriaConjVazio(&erro); if (erro){ printf("Erro de alocacao!\n"); exit(1); } //Enquanto Opcao for diferente de SAIR. do { //Pergunta a Opcao que o usuario deseja realizar. scanf("%d", &Opcao); //Verifica qual Opcao foi escolhida. switch (Opcao) { // Opcao 1 case INSERCAO: scanf("%d \n%c", &valor, &labelConj); if (labelConj == 'A') //insere em A if (Insere(valor, A) == FALSO) //se der problema printf(FRASE_ELEM_INVALIDO); //imprime frase else { printf("A = "); Imprimir(A); } else if (labelConj == 'B') // insere em B if (Insere(valor, B) == FALSO) printf(FRASE_ELEM_INVALIDO); else { printf("B = "); Imprimir(B); } else printf(FRASE_ERRO); break; // Opcao 2 case REMOCAO: scanf("%d \n%c", &valor, &labelConj); if (labelConj == 'A') // remove de A if (Remove(valor, A) == FALSO) //se der problema printf(FRASE_ELEM_NAOENCONTRADO); //imprime frase else { printf("A = "); if (TestaVazio(A)) { printf(FRASE_CONJ_VAZIO); } else { Imprimir(A); } } else if (labelConj == 'B') // remove de B if (Remove(valor, B) == FALSO) printf(FRASE_ELEM_NAOENCONTRADO); else { printf("B = "); if (TestaVazio(B)) { printf(FRASE_CONJ_VAZIO); } else { Imprimir(B); } } else printf(FRASE_ERRO); break; // Opcao 3 case MEMBRO: scanf("%d \n%c", &valor, &labelConj); if (labelConj == 'A') // procura em A if (Membro(valor, A) == FALSO) //se der problema printf(FRASE_FALSO); //imprime frase else printf(FRASE_VERDADEIRO); //imprime frase else if (labelConj == 'B') // procura em B if (Membro(valor, B) == FALSO) printf(FRASE_FALSO); else printf(FRASE_VERDADEIRO); else printf(FRASE_ERRO); break; // Opcao 4 case TAMANHO: scanf("\n%c", &labelConj); if (labelConj == 'A') // verifica A printf("%d\n", Tamanho(A)); else if (labelConj == 'B') // verifica B printf("%d\n", Tamanho(B)); else printf(FRASE_ERRO); break; // Opcao 5 case IMPRESSAO: printf("A = "); if (TestaVazio(A)) { printf(FRASE_CONJ_VAZIO); } else { Imprimir(A); } printf("B = "); if (TestaVazio(B)) { printf(FRASE_CONJ_VAZIO); } else { Imprimir(B); } break; // Opcao 6 case MINIMO: scanf("\n%c", &labelConj); if (labelConj == 'A') { // verifica A min = Min(A); if (min == TAM) // se conjunto vazio printf(FRASE_CONJ_VAZIO); // imprime frase else printf("%d\n", min); //imprime frase } else if (labelConj == 'B') { // verifica B min = Min(B); if (min == TAM) // se conjunto vazio printf(FRASE_CONJ_VAZIO); // imprime frase else printf("%d\n", min); //imprime frase } else printf(FRASE_ERRO); break; // Opcao 7 case MAXIMO: scanf("\n%c", &labelConj); if (labelConj == 'A') { // verifica A max = Max(A); if (max == TAM) // se conjunto vazio printf(FRASE_CONJ_VAZIO); // imprime frase else printf("%d\n", max); //imprime frase } else if (labelConj == 'B') { // verifica B max = Max(B); if (max == TAM) // se conjunto vazio printf(FRASE_CONJ_VAZIO); // imprime frase else printf("%d\n", max); //imprime frase } else printf(FRASE_ERRO); break; // Opcao 8 case UNIAO: Inicializar(C); Uniao(A, B, C); if (TestaVazio(C)) { printf(FRASE_CONJ_VAZIO); } else { Imprimir(C); } break; // Opcao 9 case INTERSECCAO: Inicializar(C); Interseccao(A, B, C); if (TestaVazio(C)) { printf(FRASE_CONJ_VAZIO); } else { Imprimir(C); } break; // Opcao 10 case DIFERENCA: Inicializar(C); Diferenca(A, B, C); if (TestaVazio(C)) { printf(FRASE_CONJ_VAZIO); } else { Imprimir(C); } break; // Opcao 11 case IGUAL: if (Igual(A, B) == FALSO) printf(FRASE_FALSO); else printf(FRASE_VERDADEIRO); break; // Opcao 12 case COPIA: Copia(A, B); printf("A = "); if (TestaVazio(A)) { printf(FRASE_CONJ_VAZIO); } else { Imprimir(A); } printf("B = "); if (TestaVazio(B)) { printf(FRASE_CONJ_VAZIO); } else { Imprimir(B); } break; // Opcao 13 case SAIR: Libera(A); Libera(B); Libera(C); break; } } while (Opcao != SAIR); return (0); }