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
|
|