【发布时间】:2020-08-29 08:42:19
【问题描述】:
我是 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::ConvertToImage获取wxImage,然后按照@macroland 的建议进行操作。