问题描述
我是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,size.GetWidth(),size.GetHeight(),&screen,0);
bitmap.SaveFile(wxT("screenshot.bmp"),wxBITMAP_TYPE_BMP);
看起来不错。但是我找不到任何有关如何迭代图像中像素的示例。我发现了一些wx类,例如wxPixelData可能会有所帮助,但没有有关如何访问现有图像中像素的示例。如果有人可以告诉我,将不胜感激。谢谢
解决方法
如果您不关心性能(例如,只需执行一次),则实际上应该将wxBitmap
转换为wxImage
,然后使用此类的方法访问其数据。如果您确实在乎性能,则应该使用原始像素数据访问,尽管这不太方便(其API级别较低,以便使其更快),但是图像中当然有an example of doing this样本。