Tag:

如何在OpenCV中捕获桌面(即将位图转换为Mat)?

我想使用OpenCV来处理我的桌面,就好像它是一个videostream。 我熟悉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 谢谢能回答这个问题的人。