C ++ wxWidgets遍历桌面屏幕截图中的像素
Posted
技术标签:
【中文标题】C ++ wxWidgets遍历桌面屏幕截图中的像素【英文标题】:C++ wxWidgets Iterate through pixels in desktop screenshot 【发布时间】: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,但没有关于如何访问现有图像中像素的示例。如果有人可以告诉我,将不胜感激。谢谢
【问题讨论】:
docs.wxwidgets.org/3.0/… 使用wxBitmap::ConvertToImage
获取wxImage,然后按照@macroland 的建议进行操作。
【参考方案1】:
如果你不关心性能(例如你只做一次),你确实应该将wxBitmap
转换为wxImage
,然后使用这个类的方法来访问它的数据。如果您确实关心性能,则应该使用原始像素数据访问,虽然这不太方便(它的 API 较低级别以使其更快),当然,图像样本中有an example of doing this。
【讨论】:
我知道你不应该在 SO 上发布链接,但这对我帮助很大。 :)以上是关于C ++ wxWidgets遍历桌面屏幕截图中的像素的主要内容,如果未能解决你的问题,请参考以下文章