【发布时间】:2020-02-20 23:00:54
【问题描述】:
我使用头文件(LenaArray.h); int lena [511][511] = {162,162,162,etc...},导入了Lena的二维数组
但现在我想将其转换为灰度图像,我不知道如何请帮忙? Image of Lena I'm trying to print
#include <stdio.h>
#include "LenaArray.h"
int main () {
int i,j;
int width = 511;
int height = 511;
for (i = 0; i < height; i ++ )
{
for(j = 0; j < width; j ++)
{
printf("%d",&lena[i][j]);
}
}
}
【问题讨论】:
-
我不确定
i ++和j ++是否符合标准。我认为不是。 -
++s 没有错。一个主要问题是您的 printf 中的“&”。您不想打印数组值的地址,而是想打印实际值。此外,您需要知道该值代表什么。它是否以某种方式对 RGB 值进行编码?它是调色板的索引吗?在我看来它已经是灰度的了。那么你想做什么——在屏幕或打印机上渲染实际图像?为此,您需要某种图形库。
-
这可能是初学者最简单的方法了...stackoverflow.com/a/22580958/283662
-
您还没有解释数组的格式。红色、绿色和蓝色分量是如何存储的?主要技术是使用关系
float Gray = 0.2989f*Red + 0.5870f * Green + 0.1140f * Blue。这当然会产生 Gray 作为与组件相同比例的浮点数。大多数情况下,您需要将Gray舍入到最接近的整数以创建结果图像。类似于(int)(Gray + 0.5)。