gpt4 book ai didi

在 C 中裁剪 PGM

转载 作者:行者123 更新时间:2023-11-30 16:01:27 26 4
gpt4 key购买 nike

我正在尝试自学数字图像处理。我已将我的 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);

最佳答案

您忘记增加k。您还希望循环如下所示:

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

这样您就可以实际裁剪出所需的矩形,而不仅仅是具有适当宽度和高度的左上角矩形。

关于在 C 中裁剪 PGM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6591359/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com