codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
//画像処理のプログラム //カラー画像を読み込みRGBの3枚のグレースケールから //HSVの3枚のグレースケールを出力するプログラムを作成してほしいです。 //下記のプログラムは途中が間違っていますが改良をお願いします。 #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { FILE *fp; int i,j; unsigned char buf[2]; unsigned short *data; int w,h; w = atoi (argv[1]); h = atoi (argv[2]); data=(unsigned short*)malloc(sizeof(unsigned short)*w*h); fp=fopen(argv[3],"rb"); fseek(fp,512,SEEK_SET); for(j=0; j<h; j++){ for(i=0; i<w; i++){ fread((char*)buf,2,1,fp); data[i+j*h]=(unsigned short)(buf[0]<<8)|buf[1]; } } fclose(fp); for(i=0; i<w*h; i++){ data[i]/=4; } fp=fopen(argv[4],"wb"); fprintf(fp,"P5 %d %d 255\n",w,h); for(j=0;j<h;j++){ for(i=0;i<w;i++){ buf[0]=(unsigned char) data[i+j*w]; fwrite((char*)buf,1,1,fp); } } fclose(fp); //for(i=0; i<w*h; i++){ // data[i]/=4; // } //free(data); return 0; } h = atoi (argv[2]); //R dataR=(unsigned short*)malloc(sizeof(unsigned short)*w*h); fp=fopen(argv[3],"rb"); fseek(fp,512,SEEK_SET); for(j=0; j<h; j++){ for(i=0; i<w; i++){ fread((char*)buf,2,1,fp); data[i+j*w]=(unsigned short)(buf[0]<<8)|buf[1]; } } //G dataG=(unsigned short*)malloc(sizeof(unsigned short)*w*h); fp=fopen(argv[4],"rb"); fseek(fp,512,SEEK_SET); for(j=0; j<h; j++){ for(i=0; i<w; i++){ fread((char*)buf,2,1,fp); data[i+j*w]=(unsigned short)(buf[0]<<8)|buf[1]; } } //B dataB=(unsigned short*)malloc(sizeof(unsigned short)*w*h); fp=fopen(argv[5],"rb"); fseek(fp,512,SEEK_SET); for(j=0; j<h; j++){ for(i=0; i<w; i++){ fread((char*)buf,2,1,fp); data[i+j*w]=(unsigned short)(buf[0]<<8)|buf[1]; } } fclose(fp); for(i=0; i<w*h; i++){ data[i]/=4; } //siki max = 0, color = 0; if(max < data1[i])} max = data1[i]; } if(max < data2[i])} max = data2[i]; } if(max < data3[i])} max = data3[i]; } min = 255; if(min > data1[i])} min = data1[i]; } min = 255; if(min > data2[i])} min = data2[i]; } min = 255; if(min > data3[i])} min = data3[i]; } data6[i] = max data5[i] = 255 * (max-min)/max; if(c==1)} data4[i] = 60 * ((B-G)/(max-min)); //syuturyoku fp=fopen(argv[4],"wb"); fprintf(fp,"P5 %d %d 255\n",w,h); for(j=0;j<h;j++){ for(i=0;i<w;i++){ buf[0]=(unsigned char) data[i+j*w]; fwrite((char*)buf,1,1,fp); } } fclose(fp); //for(i=0; i<w*h; i++){ // data[i]/=4; // } //free(data); return 0; }
Private
[
?
]
Run code
Submit