#include <pgm.h>
#include <stdio.h>
int main()
{
// 変数等宣言 -----------------------------------------------------------
int width, height; // 画像の縦画素数,横画素数用変数
gray **image_value; // 濃度(輝度)値保存用
gray max_value; // 最大濃度(輝度)値用変数
// pgm画像の読み込み ----------------------------------------------------
image_value = pgm_readpgm(stdin, &width, &height, &max_value);
int i,j,x,y,buf;
int image_out[j];
int m[9];
// ここから下に画像処理プログラムを書いてください------------------
for(i=0;i<width;i++){
for(j=0;j<height;j++){
m[0]=image_value[i+1][j+1];
m[1]=image_value[i+1][j-1];
m[2]=image_value[i-1][j+1];
m[3]=image_value[i+1][j-1];
m[4]=image_value[j+1];
m[6]=image_value[i+1][j-1];
m[5]=image_value[i+1][j ];
m[7]=image_value[i-1][j ];
m[8]=image_value[j];
for(y=0;y<8;y++){
for(x=0;x<8;x++){
if(m[x+1]<m[x]){
buf=m[x+1];
m[x+1]=m[x];
m[x]=buf;
}
}
}
return m[4];
image_out[j]=m[4]; /*メディアンフィルタ*/
}
}
for(i=0;i<width;i++){
for(j=0;j<height;j++){
image_value[j]=image_out[j];
}
}
// 処理プログラムはこの上まで -------------------------------------------
// pgmファイルの書き出し ------------------------------------------------
pgm_writepgm(stdout, image_value, width, height, max_value, 0);
return 0;
}
------------------------------------------------
コンパイル成功後
実行したときに
./executefile < sample_01.pgm> output1.pgm
9 [main] executefile 3064 _cygtls::handle_exeptions: Error while dumping
state (probably corrupted stack)
Segmentation fault (core dumped)
というエラーが出ました。どうしたらいいの分からないので教えてください。
実行時にエラーがでました。
Re: 実行時にエラーがでました。
return m[4];以降は実行されないので調べる必要はありません。
エラーはそれ以前に起きているはずです。
m[1]=image_value[i+1][j-1];
m[2]=image_value[i-1][j+1];
m[3]=image_value[i+1][j-1];
m[6]=image_value[i+1][j-1];
m[7]=image_value[i-1][j ];
これらもi=0;j=0 の時はまずいと思います。
かな
エラーはそれ以前に起きているはずです。
m[1]=image_value[i+1][j-1];
m[2]=image_value[i-1][j+1];
m[3]=image_value[i+1][j-1];
m[6]=image_value[i+1][j-1];
m[7]=image_value[i-1][j ];
これらもi=0;j=0 の時はまずいと思います。
かな