我该如何处理图像?

How can I process an image?

本文关键字:处理 图像 何处理      更新时间:2023-10-16

我正在构建一个程序,将图像文件(任何文件类型都是最简单的)转换为G-Code,以便在带有钢笔绘图仪附件的rep-rap上使用。

我想知道如果我想处理图像像素逐像素和检查像像素颜色的东西,我怎么能用c++做到这一点?

我真的很想知道如何处理位图图像,逐像素,检查像素的颜色。

最好的方法是使用库,例如magick++。

当你加载图像时,你可以使用Blob

访问它的像素数据

您可能想要使用已经测试过的现有库。

但是为了好玩/练习/等等,这将是一个很好的练习,并不是不可能做到的。与其他图像格式相比,位图格式(相对)简单。维基百科页面上有大量的信息,包括一些c++代码。看起来,一旦您越过了标题信息,您就得到了一个应该不难解析的像素数组。

好运。

大多数图像格式由标题和实际的原始图像数据组成。bimpap形象也不例外。如果您不想使用现有的库之一,或者如果您不被允许使用,您应该阅读位图格式:

http://en.wikipedia.org/wiki/BMP_file_format

一旦你理解了这一点,你就可以创建适当的结构/类来存储你想从头文件中获得的信息,如x,y大小,bpp等。还有一个指向原始图像数据的指针。然后,您可以简单地遍历每个像素并对其进行任何操作:)

一旦您破译图像文件,我建议您将像素放入矩阵中,用于第一次传递。(未来的版本可以使用其他方法来访问像素)。

您可以通过使用矩阵乘法对像素应用转换。您还可以通过使用数组索引来单独访问像素。

在web和SO中搜索"introduction to graphics c++"