如何通过OpenCV应用程序检查显示器是否已在Windows / Linux中连接?

时间:2019-01-18 19:25:32

标签: c++ c linux windows opencv

如何在Windows / Linux中通过OpenCV应用程序检查显示器是否已连接?

当我运行我的应用程序时,需要以下程序行为:

  • 如果已连接监视器,则结果将显示在窗口中
  • 如果未连接监视器,或者如果我通过SSH运行应用程序,则结果将保存到image.jpg

当前,如果未连接监视器或使用SSH运行我的应用程序,则会收到一条错误消息,提示我无法将其捕获:

  

QXcbConnection:无法连接到   显示

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;

int main( int argc, char** argv )
{
    if( argc != 2) return -1;
    Mat image = imread(argv[1], CV_LOAD_IMAGE_COLOR); 
    if(! image.data )  return -1;
    try {
        namedWindow( "Display window", WINDOW_AUTOSIZE );
        imshow( "Display window", image );
        waitKey(0);
    } catch(...) {
       imwrite( "output.jpg", image );
    }
    return 0;
}

当前,OpenCV应用程序需要附加标志-monitor来启用/禁用向窗口的输出,这不是很有用。

不需要完整的API,它将取代OS API。但是如果有一个返回监视器是否已连接的函数,那将非常有用。

0 个答案:

没有答案