gpt4 book ai didi

c - 使用 C 中的数组替换图像的一部分

转载 作者:太空宇宙 更新时间:2023-11-04 03:27:06 25 4
gpt4 key购买 nike

对于一项作业,我得到了相当大的代码块,这些代码读取 PGM 图像的文件名,然后在通过具有一些 for 循环的函数运行它之后,它写入一个新文件。 PGM 是灰度图像,将 0~255 的数字存储在二维数组中。我应该调整函数内的 for 循环和数组,以便以某种方式调整新文件。以下是我到目前为止写的一些内容。

enter image description here

    int i,j;

for (i=0;i<numRows/2;i++)
{ for (j=numCols/2;j<numCols;j++)
{
imgtemp[i+numRows/2-1][j+numCols/2-1] = imgtemp[i][j];
}
}

    int i,j;

for (i=0;i<numRows;i++)
{ for (j=0;j<i;j++)
{
imgtemp[i][j] = 0;
}
}

我在弄清楚如何水平和垂直翻转选择时遇到了一些麻烦。

我以为会是这样的:

    int i,j;

for (i=0;i<numRows;i++)
{ for (j=0;j<i;j++)
{
imgtemp[numCols-1-i][numRows-1-j] = imgtemp[i][j];
}
}

但它最终翻转了图像的错误部分。我不确定如何修复它。

最佳答案

您想从对角点 (img[i][(int)(numCols*i/(float)numRows))]) 向右复制值。所以您的 j 索引应该从第 i*numCols/numRows 位置开始。 (如果图像是方形的,那么只需简单地在第二个 for 中使用 j = i)

int i,j;

for (i=0;i<numRows;i++)
{
for (j=(int)((numCols*i/(float)numRows)); j<numCols; j++)
{
imgtemp[numRows-1-i][numCols-1-j] = imgtemp[i][j];
}
}

关于c - 使用 C 中的数组替换图像的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40299258/

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