【问题标题】:C++ wxWidgets Iterate through pixels in desktop screenshotC ++ wxWidgets遍历桌面屏幕截图中的像素
【发布时间】: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,但没有关于如何访问现有图像中像素的示例。如果有人可以告诉我,将不胜感激。谢谢

【问题讨论】:

标签: c++ wxwidgets


【解决方案1】:

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

【讨论】:

  • 我知道你不应该在 SO 上发布链接,但这对我帮助很大。 :)
猜你喜欢
  • 1970-01-01
  • 2010-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-09
相关资源
最近更新 更多