gpt4 book ai didi

c - 数组函数(图像处理项目)

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

我遇到了与数组函数相关的作业问题。我想在前三行和最后三行和列处制作一个带有“0”的边框元素。首先,我能够生成 256X256 大小的数字(array[256][256])。然后,在我生成第一个数组之后,我需要执行一些条件。例如,

  • 对于元素值 <127,从该值中减去 20。
  • 对于元素值 >127,请在该值上添加 20。
  • 如果运算后任意元素的值为<0,则为其赋值0。
  • 如果运算后任意元素的值 >255,则将值 255 赋给它。

问题是当我再次生成时,元素的“0”边框变得不同。我如何解决它像第一个数组一样,如元素的“0”边框?

enter image description here

下面是我的 C++ 代码。

#include<stdio.h>
#include<stdlib.h>

void main()
{
int inputimage[256][256], modifinputimage[256][256];
int i, j;
char ch;

for (i = 0; i < 256; i++)
{
if (i < 3)
{
for (j = 0; j < 256; j++)
{
if (j < 256)
{
printf("0\t");
}

}
}
else if (i >= 253)
{
for (j = 0; j < 256; j++)
{
if (j < 256)
{
printf("0\t");
}

}
}
else if (i >= 3 && i <253)
{
for (j = 0; j < 256; j++)
{
if ((i >= 3 && j < 3) || (i<253 && j >= 253))
{
printf("0\t");
}


if (j >= 3 && j < 253)
{
inputimage[i][j] = rand() % 256;
printf("%d\t", inputimage[i][j]);

}

}
}

}

printf("\nProceed to Contrast Adjustment ? (Press ENTER to continue)*** \n\n\n\n");
ch = getche();

for (i = 0; i < 256; i++)
{
if (i < 3)
{
for (j = 0; j < 256; j++)
{
if (j < 256)
{
printf("0\t");
}

}
}
else if (i >= 253)
{
for (j = 0; j < 256; j++)
{
if (j < 256)
{
printf("0\t");
}

}
}
else if (i >= 3 && i <253)
{
for (j = 0; j < 256; j++)
{
if ((i >= 3 && j < 3) || (i<253 && j >= 253))
{
printf("0\t");
}


if (j >= 3 && j < 253)
{
if (inputimage[i][j] < 127 && inputimage[i][j] >= 20)
{
modifinputimage[i][j] = inputimage[i][j] - 20;
printf("%1d\t", modifinputimage[i][j]);
}
if (inputimage[i][j] > 127 && inputimage[i][j] <= 235)
{
modifinputimage[i][j] = inputimage[i][j] + 20;
printf("%1d\t", modifinputimage[i][j]);
}
if (inputimage[i][j] <= 0)
{

modifinputimage[i][j] = inputimage[i][j];
printf("0\t");
}
if (inputimage[i][j] >= 255)
{

modifinputimage[i][j] = inputimage[i][j];
printf("255\t");
}

}

}
}

}

}

最佳答案

在您的修改中,您需要使用按行和列访问数组的方法,方法是在开头使用两个 for 循环来获取行和列的位置。例如

for (int i = 0; i < 256; i++){
for(int j = 0; j < 256; j++){


}
}

这样您就可以遍历所有行和列,并在上述条件中使用

if(i <= 3 || i >= 253){
//here u can use the nested loop to print 0's for both first and last 3 rows
printf("0\t");
}

// similarly for columns you can use this

else if(j <= 3 || j >=253){

printf("0\t");
}

else if(i > 3 && i < 253 && j > 3 && j < 253){
//here your modification rules
}

希望这有帮助

关于c - 数组函数(图像处理项目),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46589299/

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