你可以使用OpenCV库和Windows API来实现在Windows环境下每隔200毫秒获取一张屏幕截图并输出。
以下是一个简单的示例代码:
#include <iostream>
#include <opencv2/opencv.hpp>
#include <windows.h>
using namespace std;
using namespace cv;
int main()
{
while (true) {
// 获取屏幕尺寸
int screen_width = GetSystemMetrics(SM_CXSCREEN);
int screen_height = GetSystemMetrics(SM_CYSCREEN);
// 创建与屏幕尺寸相同的Mat对象
Mat screenshot(screen_height, screen_width, CV_8UC3);
// 获取屏幕设备上下文句柄
HDC hdc_screen = GetDC(NULL);
// 创建内存设备上下文,用于将屏幕内容复制到Mat对象中
HDC hdc_mem = CreateCompatibleDC(hdc_screen);
// 创建位图,并将其与内存设备上下文相关联
HBITMAP hbitmap = CreateCompatibleBitmap(hdc_screen, screen_width, screen_height);
SelectObject(hdc_mem, hbitmap);
// 将屏幕内容复制到内存设备上下文中
BitBlt(hdc_mem, 0, 0, screen_width, screen_height, hdc_screen, 0, 0, SRCCOPY);
// 将位图数据复制到Mat对象中
BITMAPINFOHEADER bi;
bi.biSize = sizeof(BITMAPINFOHEADER);
bi.biWidth = screen_width;
bi.biHeight = -screen_height; // 负号表示倒置图像
bi.biPlanes = 1;
bi.biBitCount = 24; // 每个像素3通道,BGR格式
bi.biCompression = BI_RGB;
bi.biSizeImage = 0;
GetDIBits(hdc_mem, hbitmap, 0, screen_height, screenshot.data, (BITMAPINFO*)&bi, DIB_RGB_COLORS);
// 释放资源
ReleaseDC(NULL, hdc_screen);
DeleteObject(hbitmap);
DeleteDC(hdc_mem);
// 显示截图
imshow("Screenshot", screenshot);
// 等待200毫秒
waitKey(200);
}
return 0;
}
请确保你已经在项目中正确配置了OpenCV库,并链接了相关的依赖库。这个示例代码会每隔200毫秒获取一张屏幕截图并在窗口中显示出来。你可以根据需要对其进行修改和扩展。
内容由零声教学AI助手提供,问题来源于学员提问




