gpt4 book ai didi

c - 像素矩阵如何缩放

转载 作者:行者123 更新时间:2023-11-30 15:43:36 25 4
gpt4 key购买 nike

我正在做一个 sierpinski 的地毯程序,我设法从矩阵创建一个 PGM 图像。我首先创建一个 char ** 矩阵,其中有 # 或 ' ' .# = 白色,' ' = 黑色,并且然后我创建一个 int **pixels ,其值为 0 或 255 表示黑色和白色,非常简单。矩阵大小等于 sierpinski 地毯的迭代次数:对于该算法的 3 次迭代,我得到了 27 x 27 像素的结果矩阵(即图像)。我怎样才能乘以这个矩阵来放大结果图片但保持相同的图像。就像每个像素我希望它是输出图像中的 4 个像素。 C 程序。

编辑:用于从像素值矩阵打印 PGM 图像的代码

void print(char fout[30],int **pixels,int width,int height){

int i,j;
FILE *f = fopen(fout,"w");
fprintf(f,"%s\n","P2");
fprintf(f,"%d %d\n",width,height);
fprintf(f,"%d\n",255);
for(i=height-1;i>=0;i--){
for(j=0;j<width;j++){
fprintf(f,"%d ",pixels[i][j]);
}
fprintf(f,"\n");
}

fclose(f);

}

创建像素值矩阵的代码

for(i=0;i<size;i++)
for(j=0;j<size;j++)
if(basegrid[i][j] == ' ')
pixels[i][j]=0;
else
pixels[i][j]=255;

最佳答案

首先,您可以创建一个更大的矩阵(大小:size * 2 x size * 2),然后根据您最初拥有的像素填充它。

这样的事情应该有效:

int main()
{
int **pixels;
int size;
int **enlarged;

int idx;
enlarged = malloc(2 * size * sizeof(int *));
for(idx = 0; idx != size; ++idx)
{
enlarged[idx] = malloc(2 * size * sizeof(int));
}

int row;
int col;
for(row = 0; row != size; ++row)
{
for(col = 0; col != size; ++col)
{
enlarged[row * 2][col * 2] = pixels[row][col];
enlarged[row * 2 + 1][col * 2] = pixels[row][col];
enlarged[row * 2][col * 2 + 1] = pixels[row][col];
enlarged[row * 2 + 1][col * 2 + 1] = pixels[row][col];
}
}
}

请注意,我省略了读取大小和填充像素的代码。

希望这有帮助。

关于c - 像素矩阵如何缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19837357/

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