大学の課題でmale00.pgm,male01.pgm,male02.pgm~male24.pgmまでの25枚の画像から平均画像を作れというものが出ました
例として下はBaboon150.pgm", Lena150.pgm", Cameraman150.pgm",の3つの画像から平均画像をつくるプログラムです
画像の読み込みの部分に3つの画像が書いてありますけど、ここでfor文を使ってmale01~male24までの画像を読み込ませるみたいです
まだまだC言語を勉強をし始めて間もないもので修正すればいいのかわかりません、なにとぞご教授ください、お願いします
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//以下より下の行では TAKASA および HABA という記述が自動的に 40 という記述に置き換えられる
#define TAKASA 150
#define HABA 150
//関数プロトタイプ宣言
void input_pgm(char *imgname, int img[TAKASA][HABA]);
int getint(FILE *fp);
int main(void)
{
/*************************************************************************/
// 変数宣言
int k, n, x, y;
int img_in[3][TAKASA][HABA];
int img_out[TAKASA][HABA];
FILE *fp;
// 画像の読み込み
input_pgm("Baboon150.pgm", img_in[0]);
input_pgm("Lena150.pgm", img_in[1]);
input_pgm("Cameraman150", img_in[2]);
// 画像処理
n = 3; //画像の枚数
for(y=0; y<TAKASA; y++)
{
for(x=0; x<HABA; x++)
{
img_out[y][x] = 0;
for(k=0; k<n; k++)
{
img_out[y][x] += img_in[k][y][x];
}
img_out[y][x] = img_out[y][x] / n;
}
}
// 画像の書き出し
fp = fopen("sp09_r4.pgm", "w");
fprintf(fp, "P2 \n");
fprintf(fp, "# Created by %s \n", "hidaka akinori");
fprintf(fp, "%d %d \n", HABA, TAKASA);
fprintf(fp, "255 \n");
for(y=0; y<TAKASA; y++)
{
for(x=0; x<HABA; x++)
{
fprintf(fp, "%d ", img_out[y][x]);
}
fprintf(fp, "\n");
}
fclose(fp);
/*************************************************************************/
printf("フォルダに正しく画像ファイルが作成されたか確認してください.\n\n");
exit(0);
}
25枚の写真の平均
- bitter_fox
- 記事: 607
- 登録日時: 14年前
- 住所: 大阪府
Re: 25枚の写真の平均
まずこのプログラムを日本語で説明することは出来ますか?saito さんが書きました:大学の課題でmale00.pgm,male01.pgm,male02.pgm~male24.pgmまでの25枚の画像から平均画像を作れというものが出ました
例として下はBaboon150.pgm", Lena150.pgm", Cameraman150.pgm",の3つの画像から平均画像をつくるプログラムです
画像の読み込みの部分に3つの画像が書いてありますけど、ここでfor文を使ってmale01~male24までの画像を読み込ませるみたいです
ちなみにこの問題は実質的には「文字列male00.pgm~male24.pgmを作れ」と言ったものに帰着できるかと思います。
[hr][追記]
ソースコードを載せる際はcodeタグで囲ってください。
詳しくはフォーラムルールをお読みください。
Re: 25枚の写真の平均
int img_in[25][TAKASA][HABA];/*3から25に変更*/
以下は変更というか追加です。
int i;
for(i=0;i<25;i++){
char file_name[100];
sprintf(file_name,"male%02d.pgm",i)
input_pgm(file_name, img_in);
}
以下は変更というか追加です。
int i;
for(i=0;i<25;i++){
char file_name[100];
sprintf(file_name,"male%02d.pgm",i)
input_pgm(file_name, img_in);
}
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: 25枚の写真の平均
TT414さんはsaitoさんと同じ方ですか? 理由のない名前の変更はお避け下さい。
codeタグもそうですがフォーラムルールの確認をお願いします。
http://dixq.net/board/board.html
codeタグもそうですがフォーラムルールの確認をお願いします。
http://dixq.net/board/board.html
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。