針對之前的問題我有個疑問,因這程式碼是全彩轉256灰階
那如果現在己經有個256灰階想直接跑出sobel的邊緣偵測,
那麼我的程式碼有那些須修改的地方嗎?謝謝
#include
#include <math.h>
#include
#include main()
{
int i, j, width, length, extra, extra3;
FILE *in, *outfile;
unsigned char linec[54],lineh[1078],line1[3072],line2[1088],pixelxy[700][700];
char infile[60], outname[60]; printf("Enter input image file name: ");
scanf("%s",infile);
in=fopen(infile,"rb");
fread(linec,1,54,in);
width=linec[19]*256 linec[18];
length=linec[23]*256 linec[22];
printf("width=%d length=%d\n",width,length);
if (width>1024) {
printf("*** image too large ***\n");
return(0);
}
extra=(4-width%4)%4;
extra3=(4-(width*3)%4)%4; printf("Enter output image name (*.bmp): ");
scanf("%s",outname);
outfile=fopen(outname,"wb"); for (i=0;i<54;i ) lineh[i]=0; lineh[0]=66;
lineh[1]=77;
lineh[2]=(width*length 1078)%6;
lineh[3]=((width*length 1078)e536)/256;
lineh[4]=(width*length 1078)/65536;
lineh[10]=54;
lineh[11]=4;
lineh[14]=40;
lineh[18]=width%6;
lineh[19]=width/256;
lineh[22]=length%6;
lineh[23]=length/256;
lineh[26]=1;
lineh[28]=8; for (i=0; i<256; i ) {
lineh[i*4 54]=i;
lineh[i*4 55]=i;
lineh[i*4 56]=i;
lineh[i*4 57]=0;
} fwrite(lineh,1,1078,outfile); for (i=0; i