Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Flaviana Castelo

erro: subscripted value is neither array nor pointer nor vector

Recommended Posts

Olá, estou tentando fazer uma função que aplique um filtro media em uma imagem, e a mesma, quando tento compilar, apresenta o seguinte erro: erro:[inline] subscripted value is neither array nor pointer nor vector[/inline]

void Filtro_Media(int nivel,int l,int c, char *formato, int max){

	unsigned char  **Media; 
	int i,z,j,k,aux = 0,cont=nivel/2,v[nivel*nivel];

	/*--Abre a Imagem--*/
	FILE *arquivo;
	img Recorte;
	arquivo=fopen("NovaImagem.pgm","r");

	/*--Pega os valores de linha, coluna e o valor maximo--*/
	fgets(Recorte.formato,4,arquivo);
	fscanf( arquivo, "%d%d%d", &Recorte.colunas, &Recorte.linhas,&Recorte.vMax);
	
	/*--Aloca o espaco da matriz Recorte--*/
	Recorte.MatrizImagem = (unsigned char**)calloc((Recorte.linhas), sizeof(unsigned char*));
	for(i=0; i<Recorte.linhas; i++){
		Recorte.MatrizImagem[i]= (unsigned char *) calloc(Recorte.colunas, sizeof(unsigned char));
	}
	
	/*--Aloca o espaco da matriz Media--*/
	Media = (unsigned char **) calloc(l+2*nivel/2, sizeof(unsigned char *));
	for(i=0; i<c; i++){
		Media[i]= (unsigned char *) calloc(c+2*nivel/2, sizeof(unsigned char));

	/*--Filtro--*/
	for(i = 0; i<l; i++){
		for(j = 0 ; j<c; j++){
			Media[(nivel/2)+i][(nivel/2)+j] = Recorte[i][j];
		}
	}
	for(i=0; i<nivel/2; i++){
		for(j = nivel/2; j<=c+nivel/2; j++){
			Media[i][j] = Recorte[(nivel/2)-i][j-(nivel/2)];
		}
	}
	for(i= l+nivel/2+1; i>l; i--){
 		cont --;
 		for(j = nivel/2; j<=c+nivel/2; j++){
			Media[i][j] = Recorte[l-1-nivel/2+cont-1][j-(nivel/2)];
		}
	}

	for(i=nivel/2; i< l+nivel/2; i++){
		for(j = 0; j<nivel/2; j++){
			Media[i][j] = Recorte[i-(nivel/2)][(nivel/2)-j];
		}
	}

	for(i = 0; i< l; i++){
		aux = 0;
		for(j = 0; j<c + nivel/2; j++){
			for(k = j; k<j+nivel; k++){
				aux += Media[j][k];

			}
		}
	}

	/*--Salvar Caso seja tipo texto--*/
	if(strcmp("P2\n", formato) == 0){
		Escreve_Text(formato, max, Media,l,c );
		system("clear");
		printf("\n\t+-------------------------------------+\n"
			  "\t| FECHE O VISUALIZADOR PARA CONTINUAR |\n"
			  "\t+-------------------------------------+\n\n");
		system("eog NovaImagem.pgm");
		system("pause");
	}

	/*--Salvar Caso seja tipo binario--*/
	if(strcmp("P5\n", formato) == 0){
		Escreve_Bin(formato, max, Media,l,c );
		system("clear");
		printf("\n\t+-------------------------------------+\n"
			  "\t| FECHE O VISUALIZADOR PARA CONTINUAR |\n"
			  "\t+-------------------------------------+\n\n");
		system("eog NovaImagem.pgm");
		system("pause");
	}

} 

O erro é apresentado aqui

/*--Filtro--*/
	for(i = 0; i<l; i++){
		for(j = 0 ; j<c; j++){
			Media[(nivel/2)+i][(nivel/2)+j] = Recorte[i][j];
		}
	}
	for(i=0; i<nivel/2; i++){
		for(j = nivel/2; j<=c+nivel/2; j++){
			Media[i][j] = Recorte[(nivel/2)-i][j-(nivel/2)];
		}
	}
	for(i= l+nivel/2+1; i>l; i--){
 		cont --;
 		for(j = nivel/2; j<=c+nivel/2; j++){
			Media[i][j] = Recorte[l-1-nivel/2+cont-1][j-(nivel/2)];
		}
	}

	for(i=nivel/2; i< l+nivel/2; i++){
		for(j = 0; j<nivel/2; j++){
			Media[i][j] = Recorte[i-(nivel/2)][(nivel/2)-j];
		}
	}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele espera um array, ponteiro ou vector, mas vc não está passando nenhum desses.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.