| Grzesiek 
 
 
 Dołączył: 09 Cze 2006
 Posty: 49
 Przeczytał: 0 tematów
 
 Ostrzeżeń: 0/5
 
 
 | 
			
				|  Wysłany: Sob 16:25, 31 Mar 2007    Temat postu: Ćwiczenia |  |  
				| 
 |  
				| kompilowanie i uruchamianie 
  	  | Kod: |  	  | $ gcc nasz_kod.c -lnetpbm -lm
 $ ./a.out < plik_wejsciowy.pgm > plik_wyjsciowy.pgm
 
 | 
 
 Negatyw obrazka
 
  	  | Kod: |  	  | //zamiana obrazka w negatyw
 
 #include <pgm.h>
 
 main()
 {
 gray **p, **g;
 int szer, wys, maxg;
 int i, j;
 int tab[9];
 int temp=0;
 //FILE *out;
 //out=fopen("p.dat","w");
 
 p=pgm_readpgm(stdin,&szer,&wys,&maxg);
 g=pgm_allocarray(szer,wys);
 
 for(i=0; i<szer; i++)
 for(j=0; j<wys; j++)
 g[i][j] = 255 - p[i][j];
 pgm_writepgm(stdout,g,szer,wys,maxg,0);
 }
 
 | 
 
 Maksimum
 
  	  | Kod: |  	  | #include <stdio.h>
 #include <pgm.h>
 
 main(){
 
 gray **p;
 gray **g;
 int szer,wys,maxg, max;
 int i,j, ii, jj;
 
 p=pgm_readpgm(stdin, &szer, &wys, &maxg);
 
 g=pgm_allocarray(szer,wys);
 
 for(i=1;i<szer-1;i++){
 for(j=1;j<wys-1;j++){
 g[i][j]=p[i][j];
 for(ii=-1;ii<=1;ii++){
 for(jj=-1;jj<=1;jj++){
 if (p[i+ii][j+jj]>g[i][j]) g[i][j]=p[i+ii][j+jj];
 }
 }
 }
 }
 
 pgm_writepgm(stdout, g, szer, wys, maxg, 0);
 }
 
 | 
 
 Średnia
 
  	  | Kod: |  	  | #include <stdio.h>
 #include <pgm.h>
 
 main(){
 
 gray **p;
 gray **g;
 int szer,wys,maxg, max;
 int i,j, ii, jj;
 
 p=pgm_readpgm(stdin, &szer, &wys, &maxg);
 
 g=pgm_allocarray(szer,wys);
 
 for(i=1;i<szer-1;i++){
 for(j=1;j<wys-1;j++){
 g[i][j]=0;
 for(ii=-1;ii<=1;ii++){
 for(jj=-1;jj<=1;jj++){
 g[i][j]+=p[i+ii][j+jj];
 }
 }
 g[i][j]=g[i][j]/9;
 }
 }
 
 pgm_writepgm(stdout, g, szer, wys, maxg, 0);
 }
 
 | 
 
 Laplac'e
 
  	  | Kod: |  	  | #include <stdio.h>
 #include <pgm.h>
 
 main(){
 
 gray **p;
 gray **g;
 int szer,wys,maxg, max, min;
 int i,j, ii, jj;
 int t[3][3]={
 {0,1,0},
 {1,-4,1},
 {0,1,0}
 };
 p=pgm_readpgm(stdin, &szer, &wys, &maxg);
 
 g=pgm_allocarray(szer,wys);
 
 for(i=1;i<szer-1;i++){
 for(j=1;j<wys-1;j++){
 g[i][j]=0;
 for(ii=-1;ii<=1;ii++){
 for(jj=-1;jj<=1;jj++){
 g[i][j]+=p[i+ii][j+jj]*t[ii+1][jj+1];
 }
 if((int)g[i][j]>max) max=g[i][j];
 if((int)g[i][j]<min) min=g[i][j];
 }
 }
 }
 
 for(i=1;i<szer-1;i++){
 for(j=1;j<wys-1;j++){
 g[i][j]=((float)(g[i][j]-min)/(float)(max-min))*255.0;
 }
 }
 pgm_writepgm(stdout, g, szer, wys, maxg, 0);
 }
 
 
 | 
 
 Post został pochwalony 0 razy
 |  | 
	
		| Jajo Administrator
 
 
 Dołączył: 08 Cze 2006
 Posty: 30
 Przeczytał: 0 tematów
 
 Ostrzeżeń: 0/5
 
 
 | 
			
				|  Wysłany: Sob 17:09, 21 Kwi 2007    Temat postu: |  |  
				| 
 |  
				| wczytanie maski z klawiatury i przetworzenie obrazka podanego w programie (czyli ostatnie ćwiczenie  21.04  ) 
 
  	  | Kod: |  	  | #include <stdio.h> #include <pgm.h>
 #include <stdlib.h>
 
 main(){
 
 gray **p;
 gray **g;
 int szer,wys,maxg, max=0, min=0;
 int i,ii,jj,j, temp, x,y, a,b;
 x=0;
 int tab[9];
 int maska[3][3];
 for(a=0; a<=2; a++){
 for(b=0; b<=2; b++){
 printf("maska[%d][%d]= ", a,b);
 scanf("%d",&maska[a][b]);
 
 }
 }
 for(a=0; a<=2; a++){
 printf("\n");
 for(b=0; b<=2; b++){
 printf("%d",maska[a][b]);
 }
 }printf("\n");
 
 FILE *f1 = fopen("13_01.pgm", "r");
 if (f1==NULL) {
 perror("Nie udalo sie otworzyc pliku 2");
 return 1;
 }
 
 
 p=pgm_readpgm(f1, &szer, &wys, &maxg);
 printf("Plik otwarty pomyslnie!\n");
 fclose(f1);
 g=pgm_allocarray(szer,wys);
 
 
 for(i=1;i<szer-1;i++){
 for(j=1;j<wys-1;j++){
 g[i][j]=0;
 for(ii=-1;ii<=1;ii++){
 for(jj=-1;jj<=1;jj++){
 g[i][j]+=p[i+ii][j+jj]*maska[ii+1][jj+1];
 }
 if((int)g[i][j]>max) max=g[i][j];
 if((int)g[i][j]<min) min=g[i][j];
 }
 }
 }
 
 for(i=1;i<szer-1;i++){
 for(j=1;j<wys-1;j++){
 g[i][j]=((float)(g[i][j]-min)/(float)(max-min))*255.0;
 }
 }
 
 FILE *f2 = fopen("14.pgm", "w");
 if (f2==NULL) {
 perror("Nie udalo sie otworzyc pliku 2");
 return 1;
 }
 pgm_writepgm(f2, g, szer, wys, maxg, 0);
 printf("Plik zapisany pomyslnie!\n");
 fclose(f2);
 }
 
 
 | 
 
 Post został pochwalony 0 razy
 |  |