0

我是一个完整的初学者。我会尽可能多地解释自己。

int i, j;
string filename;
cout << "Please enter the file name: " << endl; 
cin >> filename; 
fstream stream;

stream.open(filename.c_str(), 
    ios::in|ios::out|ios::binary);

int file_size = get_int(stream, 2); 
int start = get_int(stream, 10); 
int width = get_int(stream, 18); 
int height = get_int(stream, 22);

这部分应该获取文件及其值。

for ( i = 0; i < height; i++ )
    {
        for ( j = 0; j < width; j++)
        {
            for (int k = 0; k < split*split; k++){

                int pos = stream.tellg();
                int blue = stream.get(); 
                int green = stream.get(); 
                int red = stream.get();

这会到达每个像素内部并获得 RBG 值。

我想要的是首先将 RBG 值存储到二维数组中,然后对该数组进行一些操作。然后我想创建一个带有操作图像的新文件。

我不知道,所以一些说明和一些代码会非常有帮助。

4

2 回答 2

0

这个库很容易使用http://easybmp.sourceforge.net/。加载文件后,您可以轻松检查 RGB 值。

于 2013-05-28T08:32:01.337 回答
0

许多地方都记录了 Bmp 文件格式。例如,在维基百科上

最简单的方法是实现描述 bmp 标头的结构,并一次性读取整个结构,然后读取单个像素。

您的阅读功能已损坏并且无法正常工作,因为您没有阅读文件签名 - 标题的“BM”字段。

在某些操作系统上,已经有用于读取 BMP 的结构和功能。在 Windows 上,有BITMAPFILEHEADER。使用这些结构意味着您没有使用“纯 C++”。

如果您仍想自己阅读 BMP,请阅读有关 bmp 的 msdn 文章或 google 以获取“阅读 bmp 文件”教程。

于 2013-05-28T10:40:56.437 回答