RGB图片学习
程序员文章站
2022-07-14 16:37:13
...
为了更好的理解RGB图片,在Linux下写了个简单的测试 程序: test.c,用来生成RGB图片:
#include <stdio.h>
#include <stdlib.h>
unsigned char color_bar[8][3] = {
{255, 255, 255}, // 0
{255, 255, 0}, // 1
{255, 0, 255}, // 2
{0, 255, 255}, // 3
{255, 0, 0}, // 4
{0, 255, 0}, // 5
{0, 0, 255}, // 6
{0, 0, 0}, // 7
};
/* 水平彩条 */
void generateRGBHorizontal(int w, int h)
{
int i, j;
int bar_width = h/8;
unsigned char* data;
data = malloc(w*h*3);
for(j=0; j<h; j++)
for(i=0; i<w; i++){
data[(j*w+i)*3+0] = color_bar[j/bar_width][0];
data[(j*w+i)*3+1] = color_bar[j/bar_width][1];
data[(j*w+i)*3+2] = color_bar[j/bar_width][2];
}
FILE *f = fopen("./horizontal.rgb", "wb+");
fwrite(data, w*h*3, 1, f);
fclose(f);
free(data);
}
/* 垂直彩条 */
void generateRGBVertical(int w, int h)
{
int i, j;
int bar_width = w/8;
unsigned char* data;
data = malloc(w*h*3);
for(j=0; j<h; j++)
for(i=0; i<w; i++){
data[(j*w + i)*3 + 0] = color_bar[i/bar_width][0];
data[(j*w + i)*3 + 1] = color_bar[i/bar_width][1];
data[(j*w + i)*3 + 2] = color_bar[i/bar_width][2];
}
FILE *f = fopen("./vertical.rgb", "wb+");
fwrite(data, w*h*3, 1, f);
fclose(f);
free(data);
}
int main()
{
generateRGBHorizontal(800, 600);
generateRGBVertical(800, 600);
return 0;
}
在Linux下编译: gcc test.c -o app;
执行:./app,
在当前目录下生成两个文件:horizontal.rgb, vertical.rgb
用yuvplayer.exe打开文件,像素格式设置为:RGB24,分辨率 设置为:自定义的800x600.
效果如下:
上一篇: OpenCV提取显示一张图片的R,G,B颜色分量调试记录
下一篇: RGB讲解