C ++使用PPM图像

时间:2016-03-11 18:50:33

标签: c++ image image-processing ppm

我正在尝试编写一个读取PPM图像的函数,该函数应该返回内容。

PPM图像具有以下文本格式:

P3
numOfRows numOfColumns
maxColor
numOfRows-by-numOfColumns of RGB colors

由于文本格式混合了变量类型,有没有办法将这些存储在一个数组中?我记得C ++不支持不同类型的数组。如果没有,那么我正在考虑定义一个类来存储PPM内容。

2 个答案:

答案 0 :(得分:1)

  

C ++不支持具有不同类型的数组。

正确。

你可以:

  1. 按照您的说法定义一个类,如下所示:C++ Push Multiple Types onto Vector或者:Creating a vector that holds two different data types or classes甚至是:Vector that can have 3 different data types C++
  2. 拥有std::vector的通用C类数组(或更好,void*)。

答案 1 :(得分:0)

C ++不是Javascript。 列数/行数必须是整数。最大颜色值可以是整数或浮点数,具体取决于格式详细信息,rgb值也可以。

所以你首先阅读图像尺寸。然后创建一个缓冲区来保存图像。通常32位rgba是你想要的,所以要么使用malloc()分配width * height * 4,要么使用std :: vector并调整大小。 然后循环遍历数据,读取值并将它们放入 数组。 然后创建一个“Image”对象,其中包含宽度和高度的整数成员,以及32位rgbas的像素缓冲区(或者您喜欢的任何像素格式)。