C++ wxWidgets 遍历桌面屏幕截图中的像素

C++ wxWidgets Iterate through pixels in desktop screenshot

我是 C++ 的新手,正在尝试截取桌面的屏幕截图并将其存储到文件中。然后我想打开图像并循环遍历图像中的每个像素并访问其 RGB 值。我在 Python 中相当轻松地完成了这项工作,因为我找到了一些易于使用的库来完成这项任务,但在 C++ 中我遇到了麻烦。我正在构建一个 wxWidgets 项目,很方便,wxWidgets 似乎可以完成此任务。我已经用我在网上找到的一些代码得到了“截图并保存到文件”:

wxScreenDC screen;

wxSize size = screen.GetSize();

wxBitmap bitmap(size.GetWidth(), size.GetHeight());

wxMemoryDC memory;

memory.SelectObject(bitmap);

memory.Blit(0, 0, size.GetWidth(), size.GetHeight(), &screen, 0, 0);

bitmap.SaveFile(wxT("screenshot.bmp"), wxBITMAP_TYPE_BMP);

这看起来很好用。但是我找不到任何关于如何遍历图像中像素的示例。我发现了一些 wx 类 可能有用,比如 wxPixelData 但没有关于如何访问现有图像中像素的示例。如果有人可以告诉我,将不胜感激。谢谢

如果你不关心性能(例如你只做一次),你确实应该将 wxBitmap 转换为 wxImage 然后使用这个 class 的方法来访问其数据。如果您确实关心性能,则应该使用原始像素数据访问,虽然这不太方便(它的 API 级别较低,以使其更快),当然还有 an example of doing this 在图像示例中。