Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C中裁剪PGM_C_Image Processing_Pgm - Fatal编程技术网

在C中裁剪PGM

在C中裁剪PGM,c,image-processing,pgm,C,Image Processing,Pgm,我试着自学数字图像处理。我已将我的pgm读入结构。在这个结构中,我有像素阵列。我可以很好地打印出来。现在我想根据用户输入裁剪这张照片。我接受这些输入,根据输入的坐标得到一个黑色矩形。我做错了什么 int temp, y1, y2, x1, x2, wide, high; printf("Please Enter x1 y1 x2 y2"); scanf("%i %i %i %i", &x1, &y1, &x2, &y2); if(y1> y2) {

我试着自学数字图像处理。我已将我的pgm读入结构。在这个结构中,我有像素阵列。我可以很好地打印出来。现在我想根据用户输入裁剪这张照片。我接受这些输入,根据输入的坐标得到一个黑色矩形。我做错了什么

 int temp, y1, y2, x1, x2, wide, high;

 printf("Please Enter x1 y1 x2 y2");


scanf("%i %i %i %i", &x1, &y1, &x2, &y2);
if(y1> y2)
{
    temp = y1;
    y1 = y2;
    y2 = temp;
}
if(x1> x2)
{
    temp = x1;
    x1 = x2;
    x2 = temp;
} 
wide = x2-x1+1;
high = y2-y1+1;

fprintf(outstream, "%2s\n%i %i\n%i\n", header->filetype, wide, high,header->maxgray);

pixel image[header->height][header->width];
pixel *pix = malloc((wide*high) *sizeof(char));

int a = 0;

    for(int b= 0; b<header->height; ++b)
    {
        for(int c=0; c<header->width; ++c)
        {

           image[b][c] = header->p[a];
            ++a;
        }
    }

int k = 0;
for(int i = 0; i< high; ++i)
{
    for(int j = 0; j<wide; ++j)
    {
        pix[k]=image[i][j];

    }
}
fwrite(pix, 1, (wide*high) * sizeof(pixel), outstream);
int-temp,y1,y2,x1,x2,宽,高;
printf(“请输入x1 y1 x2 y2”);
scanf(“%i%i%i%i”、&x1、&y1、&x2和&y2);
如果(y1>y2)
{
温度=y1;
y1=y2;
y2=温度;
}
如果(x1>x2)
{
温度=x1;
x1=x2;
x2=温度;
} 
宽=x2-x1+1;
高=y2-y1+1;
fprintf(超出流,“%2s\n%i%i\n%i\n”,标题->文件类型,宽,高,标题->最大灰色);
像素图像[标题->高度][标题->宽度];
像素*pix=malloc((宽*高)*sizeof(字符));
int a=0;
对于(整数b=0;bHweight;++b)
{
对于(int c=0;cwidth;++c)
{
图像[b][c]=标题->p[a];
++a;
}
}
int k=0;
对于(int i=0;i对于(int j=0;j您忘记了递增
k
。您还希望您的循环如下:

for(int i = y1; i <= y2; ++i )
{
    for( int j = x1; j <= x2; ++j )
    {
        pix[k] = image[i][j]
        ++k;
    }
}

for(int i=y1;i)的
k
var没有增加。感谢您,经过一夜的睡眠,我可能已经得到了增量,但我永远不会得到循环。