如何将.png文件转换为二维矩阵?

时间:2013-04-27 22:28:00

标签: c png

我正在开设一个生物医学影像课程项目(注意:这是一门非编程课程,所以要求编程帮助不是作弊。要求提供规划的概念性帮助就是作弊。)我需要的地方使用不同的数学变换来操纵图像。我用C语写,所以它可以尽可能快。我已完成数学变换的代码,但我已经意识到我不知道如何将灰度.png文件转换为二维矩阵/数组来计算,我不知道如何显示.png C中的文件。任何人都可以帮助我吗?

我正在尝试将“image.png”图像转换为2d数组,其中数组中的每个条目的值都在0到255之间,并与“image.png”中的每个像素相对应。我还想转换一个2d数组,其中每个条目对应于图像中的一个像素,并且在0到255之间的值为新的“image_two.png”文件。

我是一个有点新手的程序员。我在python编程方面有扎实的基础,但C对我来说是新的。我做了很多研究,我发现很多人都在谈论使用"this library""that library",或"this library",但我如何在C中使用下载的库?作为一名python程序员,这对我来说是一个陌生的领域:(

我正在使用Ubuntu 12.04

重申:

  • 如何在C中读取灰度.png图像作为二维数组/矩阵?

  • 如何在C中将二维阵列/矩阵显示为灰度图像?

  • 如何在C代码中使用下载的库(特别是上面两个问题)?我发现了如何使用这些库。

编辑:我仍然无法弄清楚如何用.png文件创建灰度2d数组以及如何用灰度2d矩阵制作.png文件。其他人可以帮忙吗?

2 个答案:

答案 0 :(得分:4)

您可以使用更通用的图像处理库,您可能会发现它更容易使用。我推荐FreeImage http://freeimage.sourceforge.net/。请参阅手册的像素访问部分以访问像素数据。然后,您可以直接使用它或将其复制到您自己的矩阵中。

答案 1 :(得分:3)

要在Linux中安装库,通常您将使用包管理器。例如,在Debian(包括Ubuntu)中你可能会这样做:

$ apt-cache search libpng

您将根据运行此命令的结果决定安装哪个软件包,然后运行

$ sudo apt-get install <package-name>

此命令可能会在已包含在gcc搜索路径中的位置安装png.h。这意味着要在程序中使用png.h,您只需要包含它。

#include <png.h>

跳至libpng manual的第3章,了解有关阅读png文件的演练。