在c中读取8位灰度bmp文件的问题

时间:2010-11-02 14:55:09

标签: c

我想读取一个8位灰度bmp文件,重建它的像素矩阵,然后用sobel算子处理它。然而程序不能构造像素矩阵,它划分原始的pitcure块。当我运行这样的程序;
./ sobel cube.bmp output.bmp processed.bmp output.txt
cube.bmp是输入 output.bmp是构造像素矩阵的输出。 proccessed.bmp是使用sobel运算符处理的输出 Code and Sample photos

2 个答案:

答案 0 :(得分:2)

可能不是您正在寻找的答案,但请看看openCV。

假设您对图像处理步骤的兴趣不是特别是BMP操作,那么这个库会为您处理所有文件i / o,显示等。它还有一个很好的索贝尔过滤器。

答案 1 :(得分:1)

几条评论:

您的 processed.bmp 具有使用不正确的行大小或像素大小编写的位图外观。你可以知道,因为每一行都是水平移动的。

您正在处理灰度位图,但您正在读取和写入像素,就像它们具有RGB分量一样,即:

pixelArray[i][j].red = pixel.red;
pixelArray[i][j].green = pixel.green;
pixelArray[i][j].blue = pixel.blue;

灰度像素只是一个8位值。