我想使用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 :(
Run Code Online (Sandbox Code Playgroud)
StackOverflow也有类似的问题,但它们要么是旧式OpenCV,要么是Android操作系统.
我在Windows 7 64x
Opencv 2.4.3上
谢谢任何能回答这个问题的人.
如何在 OpenCV 中捕获桌面(即将位图转换为 Mat)?
你好,
谁能向我解释我将如何在 OpenCV 中使用此代码来捕获桌面屏幕?我一直试图让它工作大约 30-45 分钟,但是当我运行它时,我的屏幕没有捕获任何内容。
在我的主要申请中,我有以下三个陈述
HWND hwndDesktop = GetDesktopWindow();
hwnd2mat(hwndDesktop);
imshow("output", src);
Run Code Online (Sandbox Code Playgroud)
我正在调用上面链接中的函数 hwnd2mat。我是菜鸟。
感谢任何回答的人。