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