Как захватить рабочий стол в 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
Спасибо всем, кто может ответить на этот вопрос.