在c++中将图像读入像素矩阵

Reading an image into an matrix of pixels in C++

本文关键字:像素 图像 c++      更新时间:2023-10-16

我已经将图像读取为LPPICTUREOleLoadPictre并显示在窗口中,但我真正需要做的是将图像转换为像素矩阵,我可以操纵并保存回图像文件。

使用OleLoadPicture,我几乎可以读取所有主要的图像格式。如果我可以访问单个像素,我就可以循环并提取它们。

在其他相关问题中,人们建议使用像OpenCV这样庞大的库和其他高度发达的库,这些库可以在阳光下做任何事情,但我更喜欢保持我的解决方案尽可能轻。我已经为我的像素写了一个基本的结构,我很高兴自己做操作。

我一直在看ImageMagic库与Magic++。这看起来很好,但如果有一个解决方案只是使用Windows API提取像素并将图像保存回任意图像格式,那么我认为这将是最好的/最轻的。

OleLoadPicture给出了IPicture的实例。使用IPicture::get_Handle获取IPicture实例持有的HBITMAP。最后,使用GetDIBits获取像素数据。

这里有这样做的示例代码。将其从MFC转换为普通的WinAPI应该可以获得您的像素数据。