画像処理が行われない

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
gyuki

画像処理が行われない

#1

投稿記事 by gyuki » 10年前

以下のプログラミングを実行したのですが画像が開かれるのみです。どうすれば画像処理が行われるのでしょうか?

コード:

 
#include <stdio.h>
#include <process.h>



#define X_SIZE 200	// 処理できる最大画像
#define Y_SIZE 160

#define LX_SIZE 400	// 処理できる最大画像
#define LY_SIZE 320

#define HIGH   255	// 画像の最大強度値
#define LOW      0	// 画像の最小強度値
#define LEVEL  256	// 画像の強度レベル値

// BMPファイルのフォーマットに従って用意した変数
typedef unsigned short WORD;
typedef unsigned long DWORD;


unsigned char image_in[Y_SIZE][X_SIZE][3];	// 入力カラー画像配列
unsigned char image_out[LY_SIZE][LX_SIZE][3];	//出力カラー画像配列



//********************************************
//   24Bit RAW ファイル読み込み       *
//********************************************
void readRAW(
	char *filename,							// RAW画像ファイル名
	unsigned char image[Y_SIZE][X_SIZE][3]	// 24ビットRGB画像配列 
	)
{
	FILE *fp;


	// ファイルオープン 
	if (!fopen_s(&fp, filename, "rb"));{
		printf("readRAW: Open error!\n");
		exit(1);
	}
	printf("input file : %s\n", filename);

	fread(image, 1, X_SIZE*Y_SIZE * 3, fp);
	fclose(fp);
}


//******************************************************
//   24ビット-ビットマップデータをRAWファイルに出力    *
//******************************************************
void writeRAW(
	char *filename,
	unsigned char image[LY_SIZE][LX_SIZE][3])
{
	FILE *fp;
	if (!fopen_s(&fp, filename, "wb")); {
	// ファイルオープン 
		if (!fopen_s(&fp, filename, "wb")); {
		printf("writeRAW: Open error!\n");
		exit(1);
	}
	printf("output file : %s\n", filename);

	fwrite(image, 1, LX_SIZE*LY_SIZE * 3, fp);
	fclose(fp);

}


//**********************************************
// RGBカラー画像を二倍拡大         *
//**********************************************
	void Image_2bai(
		unsigned char image_in[Y_SIZE][X_SIZE][3],
		unsigned char image_out[LY_SIZE][LX_SIZE][3]);

	int y, x, z;

	for (y = 0; y<Y_SIZE; y++)
		for (x = 0; x< X_SIZE; x++)
			for (z = 0; z<3; z++){
				image_out[2 * y][2 * x][z] = image_in[y][x][z];
				image_out[2 * y][2 * x + 1][z] = image_in[y][x][z];
				image_out[2 * y + 1][2 * x][z] = image_in[y][x][z];
				image_out[2 * y + 1][2 * x + 1][z] = image_in[y][x][z];
			}
	for (y = 0; y<Y_SIZE / 2; y++)
		for (x = 0; x< X_SIZE / 2; x++)
			for (z = 0; z<3; z++){
				image_out[y][x][z] = image_in[2 * y][2 * x][z];
			}
}



void main(void)
{
	char input_name[100], output_name[100];

	printf("入力画像ファイル名(*.raw):"); scanf_s("%s", input_name);

	readRAW(input_name, image_in);	  // 画像の入力,RGB24ビットカラーBMP画像を配列に格納


	//画像処理:左右反転
	printf("左右反転画像ファイル名(output_name.raw):"); scanf_s("%s", output_name);
	writeRAW(output_name, image_out);		// 画像出力

}

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: 画像処理が行われない

#2

投稿記事 by みけCAT » 10年前

gyuki さんが書きました:以下のプログラミングを実行したのですが画像が開かれるのみです。どうすれば画像処理が行われるのでしょうか?
テストしていませんが、
  • fopen_sを含むif文の行(3ヶ所)の!と;を削除
  • 「//画像処理:左右判定」という行の直前でImage_2bai関数を適切な引数を与えて呼び出す
でどうでしょうか?

※複数のトピックを解決させずに平行して立てる行為は推奨されません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

閉鎖

“C言語何でも質問掲示板” へ戻る