在C ++中获取像素颜色

我想获得屏幕上不同x,y坐标的像素RGB值。 我怎么会在C ++中去解决这个问题?

我试图创build我自己的高斯模糊效果。

这将在Windows 7中。

编辑

需要包含哪些库才能运行?

我所走的是:

#include <iostream> using namespace std ; int main(){ HDC dc = GetDC(NULL); COLORREF color = GetPixel(dc, 0, 0); ReleaseDC(NULL, dc); cout << color; } 

Solutions Collecting From Web of "在C ++中获取像素颜色"

正如前面的文章中提到的,您需要Win32 API中的GetPixel函数。

GetPixel位于gdi32.dll中,所以如果你有一个适当的环境设置,你应该能够包含windows.h(其中包括wingdi.h),你应该是金。

如果你有一个最小的环境设置出于任何原因,你也可以直接在gdi32.dll上使用LoadLibrary。

GetPixel的第一个参数是设备上下文的句柄,可以通过调用GetDC函数(也可以通过<windows.h> )来获取。

一个基本的例子,从DLL中加载GetPixel并打印出你的光标所在的像素的颜色如下。

 #include<windows.h> #include<stdio.h> int main(int argc, char** argv) { FARPROC pGetPixel; HINSTANCE _hGDI = LoadLibrary("gdi32.dll"); if(_hGDI) { pGetPixel = GetProcAddress(_hGDI, "GetPixel"); HDC _hdc = GetDC(NULL); if(_hdc) { POINT _cursor; GetCursorPos(&_cursor); COLORREF _color = (*pGetPixel) (_hdc, _cursor.x, _cursor.y); int _red = GetRValue(_color); int _green = GetGValue(_color); int _blue = GetBValue(_color); printf("Red: 0x%02x\n", _red); printf("Green: 0x%02x\n", _green); printf("Blue: 0x%02x\n", _blue); } FreeLibrary(_hGDI); } return 0; } 

您可以在NULL窗口上使用GetDC来获取整个屏幕的设备上下文,并可以通过调用GetPixel

 HDC dc = GetDC(NULL); COLORREF color = GetPixel(dc, x, y); ReleaseDC(NULL, dc); 

当然,在进行所有像素读取以提高效率的时候,您只需要获取和释放设备上下文一次。