Wie erfasse ich den Desktop in OpenCV (dh verwandle eine Bitmap in eine Matte)?

Ich möchte OpenCV verwenden, um meinen Desktop so zu verarbeiten, als wäre es ein Videostream.
Ich bin mit OpenCV vertraut.
Ich bin mit der Windows-API nicht vertraut. Ich erkenne, dass es andere Möglichkeiten gibt, den Bildschirm zu erfassen, aber für die Zwecke meiner Frage muss dies mit OpenCV erfolgen.

Hier ist mein (super naiver) Code:

HWND hDesktopWnd;
HDC hDesktopDC;
hDesktopWnd=GetDesktopWindow();
hDesktopDC=GetDC(hDesktopWnd);

// get the height and width of the screen
int height = GetSystemMetrics(SM_CYVIRTUALSCREEN);
int width = GetSystemMetrics(SM_CXVIRTUALSCREEN);

// create a bitmap
HBITMAP hbDesktop = CreateCompatibleBitmap( hDesktopDC, width, height);

Mat src(height,width,CV_8UC4);
src.data = (uchar*)hbDesktop;

imshow("output",src);  //fails :(

Es gibt ähnliche Fragen zu StackOverflow, die jedoch entweder für OpenCV im alten Stil oder für Android-Betriebssysteme gelten.
Ich bin auf Windows 7 64x
Opencv 2.4.3

Vielen Dank an alle, die diese Frage beantworten können.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage