X11 XGetImage badmatch错误(无效的参数属性)

X11 XGetImage BadMatch Error (invalid parameter attributes)

本文关键字:参数 属性 无效 XGetImage badmatch 错误 X11      更新时间:2023-10-16

我正在尝试在Linux PC上捕获屏幕截图。代码的汇编很好,但是如果我尝试执行它,它会持续与以下相同的错误:

X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  73 (X_GetImage)
  Serial number of failed request:  7
  Current serial number in output stream:  7

有人可以帮助我找出问题吗?

这是代码:

#include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
using namespace cv;
int main()
{
    Display* d = XOpenDisplay(nullptr);
    auto root = DefaultRootWindow(d);
    auto img = XGetImage(d, root, 0, 0, 1000, 1000, AllPlanes, ZPixmap);
    auto rimg = Mat(1000, 1000, CV_8UC4, img->data);
    imshow("test image", rimg);
    waitKey(0);
    return 0;
}

来自https://tronche.com/gui/x/xlib/graphics/xgetimage.html

BadMatch一个输入窗口用作绘制。

badmatch一些参数或一对参数具有正确的类型和范围,但无法以请求要求的其他方式匹配。

您需要先映射窗口,然后再获取图像。使用

XMapRaised(d, root);

在致电XGetImage

之前