1. Top » 
  2. スポンサー広告 » 
  3. 画像処理論でよく使っているPGMファイル
  4. プログラミング全般 » 
  5. 画像処理 » 
  6. 画像処理論でよく使っているPGMファイル

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  • Genre:

画像処理論でよく使っているPGMファイル

画像処理論(火曜一限)で、時々プログラムの課題が出るのだよ。
それ自体は別に難しいこともないのですがPGMファイルというのをよく使っています

ld.jpg

たとえばこのような画像。
ようするに白黒に近いモノクロ画像なんですがWindows標準では開けません。
Linuxでは標準で使えるんだけどねー。

中身は

 55 62 120 255 ・・・

みたいな感じで値が並んでいるのです。
これを読み込んで処理するのが課題なのだよー。
読み込むのは標準で与えられてるんだけどね。


#define STRING_BUFFER  24
#define PGM_MAXNUM 16

int getsize(char* name, int *width, int *height){
FILE *fi;
char buffer[STRING_BUFFER];
int point = 0;
int counter= 0;

if((fi = fopen(name,"r")) == NULL){
fprintf(stderr, "File not found. - %s -\n",name);
exit(1);
}

while(!feof(fi)){
while((buffer[point] = (char)getc(fi)) != ' '
&& buffer[point] != '\n' && !feof(fi)){
point++;
if(point > STRING_BUFFER){
fprintf(stderr, "Buffer Overflow\n");
exit(1);
}
}
if(buffer[0] >= (int)'0' && buffer[0] <= (int)'9'){
counter++;
if(counter == 1){
*width = atoi(buffer);
}else if(counter == 2){
*height = atoi(buffer);
}else{
fclose(fi);
return 0;
}
}
point=0;
}

fclose(fi);

return 1;
}

void input(char* name, int *image, int width, int height)
{
FILE *fi;
char buffer[STRING_BUFFER];
int point = 0, counter = -4;
if((fi = fopen(name,"r")) == NULL){
fprintf(stderr, "File not found. - %s -\n",name);
exit(1);
}
while(!feof(fi)){
while((buffer[point] = (char)getc(fi)) != ' '
&& buffer[point] != '\n' && !feof(fi)){
point++;
if(point > STRING_BUFFER){
fprintf(stderr, "Buffer Overflow\n");
exit(1);
}
}
buffer[point] = '\0';
if(buffer[0] >= (int)'0' && buffer[0] <= (int)'9'){
counter++;
if(counter >= 0 && counter < height*width){
image[counter] = atoi(buffer);
}
}
point = 0;
}
fclose(fi);
return;
}

void output(char* name, int *image,int width, int height)
{
FILE *fo;
int i = 0;
if((fo = fopen(name,"w")) == NULL){
fprintf(stderr, "File not found. - %s -\n",name);
exit(1);
}
fprintf(fo,"P2\n%d %d\n255\n",width,height);
for(i = 0; i < height*width; i++){
if(i != 0 && i % PGM_MAXNUM == 0){
fprintf(fo, " \n");
}else if(i != 0){
fprintf(fo, " ");
}
fprintf(fo, "%d", image[i]);
}
fprintf(fo," \n");
fclose(fo);
return;
}


まぁ、一切読んでないけど・・・。
余裕が出たら読んでみますかね?
関連記事
スポンサーサイト

Comment

コメントフォーム
このエントリへコメントを書く
(任意)
(任意)
(任意)
(必須) HTMLタグは使用できません
(任意) ID生成と編集に使用します
(任意) 非公開コメントにする

Page Top

Trackback

Trackback URI
http://parabola0.blog86.fc2.com/tb.php/409-fa99b808 この記事にトラックバックする(FC2ブログユーザーのみ)

Page Top

訪問者

お引っこし。 http://parabola.sblog.jp/

プロフィール

parabola0

Author:parabola0
Twitter用ですが…。
プロフィール

最新記事
最新コメント
最新トラックバック
カテゴリ
月別アーカイブ
検索フォーム
リンク

このブログをリンクに追加する

QRコード
QRコード
RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。