对于图像,很多概念性没有完全弄明白,看到RGB24 ,RGB32,光栅,对比度,一下子懵了。如果有如下的列表,惊呆了!!
typedef pixfmt_gray8_base<1, 0>pixfmt_gray8;
typedef pixfmt_gray8_base<3, 0>pixfmt_gray8_rgb24r;
typedef pixfmt_gray8_base<3, 1>pixfmt_gray8_rgb24g;
typedef pixfmt_gray8_base<3, 2>pixfmt_gray8_rgb24b;
typedef pixfmt_gray8_base<3, 2>pixfmt_gray8_bgr24r;
typedef pixfmt_gray8_base<3, 1>pixfmt_gray8_bgr24g;
typedef pixfmt_gray8_base<3, 0>pixfmt_gray8_bgr24b;
typedef pixfmt_gray8_base<4, 0>pixfmt_gray8_rgba32r;
typedef pixfmt_gray8_base<4, 1>pixfmt_gray8_rgba32g;
typedef pixfmt_gray8_base<4, 2>pixfmt_gray8_rgba32b;
typedef pixfmt_gray8_base<4, 3>pixfmt_gray8_rgba32a;
typedef pixfmt_gray8_base<4, 1>pixfmt_gray8_argb32r;
typedef pixfmt_gray8_base<4, 2>pixfmt_gray8_argb32g;
typedef pixfmt_gray8_base<4, 3>pixfmt_gray8_argb32b;
typedef pixfmt_gray8_base<4, 0>pixfmt_gray8_argb32a;
typedef pixfmt_gray8_base<4, 2>pixfmt_gray8_bgra32r;
typedef pixfmt_gray8_base<4, 1>pixfmt_gray8_bgra32g;
typedef pixfmt_gray8_base<4, 0>pixfmt_gray8_bgra32b;
typedef pixfmt_gray8_base<4, 3>pixfmt_gray8_bgra32a;
typedef pixfmt_gray8_base<4, 3>pixfmt_gray8_abgr32r;
typedef pixfmt_gray8_base<4, 2>pixfmt_gray8_abgr32g;
typedef pixfmt_gray8_base<4, 1>pixfmt_gray8_abgr32b;
typedef pixfmt_gray8_base<4, 0>pixfmt_gray8_abgr32a;
图片格式也有很多种: bmp,gif ,jpg,还有现在的ppm,闻所未闻!!
在整个学习的过程中,我们所有的操作都是针对ppm格式的图片,这种图片的一个特点就是格式简单,不会涉及到太多的结构体,并且操作方便。除了头部表明格式,然后就是图片的长宽,最后就是所有像素点的RGB值,每一个像素点都有三个分量,分别是R,G,B,我们可以知道图片的长宽分别为width,height,就可以申请一个数组
char[width * height * 3] ,保存所有的像素点的颜***况,如果你想设置某一点的颜色值,比如是(x,y),就可以轻松的获取到该点的位置,然后修改.
如下是PPM的简介,先看看吧!!
PPM图像格式(Portable Pixelmap)
一种linux图片格式,可用ACDSEE批量转变。它是一种简单的图像格式,仅包含格式、图像宽高、bit数等信息和图像数据。
图像数据的保存格式可以用ASCII码,也可用二进制,下面列举ppm格式中比较简单的一种:24位彩色、二进制保存的图像。
文件头+rgb数据:
P6\n
width height\n
255\n
rgbrgb...
其中P6表示ppm的这种格式;\n表示换行符;width和height表示图像的宽高,用空格隔开;255表示每个颜色分量的最大值;rgb数据从上到下,从左到右排放。
刚开始的时候我是使用爱奇艺播放器也可以直接打开PPM文件,后来使用的是ppmviewer工具。