#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); // 画像出力
}
画像処理が行われない
-
gyuki
画像処理が行われない
以下のプログラミングを実行したのですが画像が開かれるのみです。どうすれば画像処理が行われるのでしょうか?
Re: 画像処理が行われない
テストしていませんが、gyuki さんが書きました:以下のプログラミングを実行したのですが画像が開かれるのみです。どうすれば画像処理が行われるのでしょうか?
- fopen_sを含むif文の行(3ヶ所)の!と;を削除
- 「//画像処理:左右判定」という行の直前でImage_2bai関数を適切な引数を与えて呼び出す
※複数のトピックを解決させずに平行して立てる行為は推奨されません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)