我在寻找如何在C语言下将Bmp文件读入2或1维数组,但有许多解决方案,但没有我需要的解决方案。 我需要读取黑色和白色bmp到(开始)2维数组,其中必须包含从0到255(灰度) 的值,然后将其转换为1维数组(但这不是问题)。 Matlab做这个automticly,但我想要更自主地在C/C++ 下工作,最后bmp应保存到Postgre数据库诠释数组。 感谢将Bmp灰度读入C
1
A
回答
0
这里面有我对做一个bmp装载机另一个SO问题:
http://nishi.dreamhosters.com/u/so_bmp_v0.zip
该示例bmp有RGB,但它似乎也可以使用灰度。这里
FILE* f = fopen("winnt.bmp", "rb"); if(f==0) return 1;
fread(buf, 1,sizeof(buf), f);
fclose(f);
BITMAPFILEHEADER& bfh = (BITMAPFILEHEADER&)buf[0];
BITMAPINFO& bi = (BITMAPINFO&)buf[sizeof(BITMAPFILEHEADER)];
BITMAPINFOHEADER& bih = bi.bmiHeader;
char* bitmap = &buf[bfh.bfOffBits];
int SX=bih.biWidth, SY=bih.biHeight;
位是指针像素表(应无符号 为适当的访问虽然)。请注意,bmp中的像素行可以按逆向顺序以 存储。
0
对不起,误读的问题:/
如果你不介意的“扭曲”的规则,一个微小的一点
#include <stdio.h>
int main(void) {
int data[100][30] = {{0}}; /* initialize 2D array to all zeroes */
int *p1d;
size_t index;
data[42][20] = 42; /* set 1 element ot 42 */
p1d = &data[0][0];
index = 42*30 + 20;
printf("%d (should be 42)\n", p1d[index]); /* pretend it's a 1D array */
return 0;
}
+0
我没有看到这段代码如何帮助我,我的问题是在阅读Bmp时得到正确的温度,但直到现在,我已经得到0到255之间的值,但与我在Matlab矩阵中看到的不一样。 – Mehdi 2011-03-18 10:37:43
相关问题
- 1. 将彩色bmp转换为灰度bmp?
- 2. 阅读8bit灰度bmp文件的问题c
- 3. 转动色BMP为灰度:
- 4. 添加BMP灰度头
- 5. C将bmp像素读入2d数组
- 6. 从MemoryStream中将灰度BMP写入ZIP文件
- 7. 转换8位色的BMP图像到8位灰度BMP
- 8. 在c中读取/写入bmp文件
- 9. 加载一个8bpp的灰度BMP用C
- 10. 将灰度原始格式转换为bmp格式
- 11. 如何将灰度jpg转换为24 bitcount的bmp
- 12. 在图像模块中将BMP转换为灰度Python
- 13. Python:将灰度BMP转换为列表清单
- 14. 读取24位BMP的宽度/高度
- 15. C读取bmp文件
- 16. 在C++中读取bmp文件的宽度和高度
- 17. 读取/写入bmp文件
- 18. 将XImage写入.bmp文件C
- 19. C#dicom printscu灰度
- 20. 阅读16位灰度TIFF
- 21. 读取一个bmp文件数据并将其写入另一个bmp
- 22. 在Silverlight中将图像淡入灰度
- 23. PIL为什么不能修改灰度BMP图像数据?
- 24. 图像转换为索引2位灰度BMP
- 25. 阅读BMP文件C++(阅读BMP标题时遇到的问题)
- 26. 读取.bmp文件C++,错误的值?
- 27. 阅读c中的BMP图像
- 28. 在C中读取bmp头文件
- 29. 读取和写入BMP文件
- 30. 尝试读取和写入bmp文件时中止C++
你看了[关于BMP的维基百科文章](http://en.wikipedia.org/wiki/BMP_file_format)?我认为它很好地解释了BMP文件格式。 – pmg 2011-03-18 11:09:02