0

我遇到了比尔格林的这个关于图像处理的优秀教程 - http://dasl.mem.drexel.edu/alumni/bGreen/www.pages.drexel.edu/_weg22/edge.html

他在教程中使用 BMP 格式,因为它们是最简单的。我尝试了sobel边缘检测代码,让它编译并运行。当我在该网站上的图像(例如,LIAG.bmp,女士的照片)上尝试此操作时,代码运行良好。但是,当我获得其他 .bmp 图像时(例如,获取任何图像并在 - http://www.online-convert.com/result/6c0ce763b5e6cadf3a76a966acdb9505进行转换)并且代码吐出无法读取的图像由任何图像编辑器。这个问题很可能是在线 -

nColors = (int)getImageInfo(bmpInput, 46, 4);

他的代码。这里似乎有一些硬编码,仅适用于他教程中的图像尺寸。对于他网站上的所有图像,nColors 变量是 256,但对于我得到的所有图像,nColors 变量都是 0。谁能告诉我如何更改这段代码来概括这一点?

4

1 回答 1

1

46这一行:

nColors = (int)getImageInfo(bmpInput, 46, 4);

...指的是 BMP 标头中的位偏移量。除非您正在创建不使用此文件结构的 BMP,否则理论上它应该可以工作。他指的是该页面上的 8 位图像。也许,16 位或 32 位图像的标题使用不同的文件结构。

阅读此维基百科页面了解更多信息:https ://en.wikipedia.org/wiki/BMP_file_format#File_structure

于 2015-12-10T18:32:26.637 回答