Как захватить рабочий стол в OpenCV (т.е. превратить растровое изображение в мат)?

Я хочу использовать OpenCV для обработки моего рабочего стола, как если бы это был видеопоток.

Я знаком с OpenCV.

Я не знаком с Windows API. Я понимаю, что есть и другие способы захвата экрана, но для моего вопроса мне нужно, чтобы это было сделано с использованием OpenCV.

Вот мой (супер наивный) код:

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 :(

Есть аналогичные вопросы о StackOverflow, но они относятся либо к старому стилю OpenCV, либо к операционной системе Android.

м на windows 7 64x

Opencv 2.4.3

Спасибо всем, кто может ответить на этот вопрос.

Ответы на вопрос(2)

Ваш ответ на вопрос