如何检查显示器是否已插入? (Linux)的

时间:2015-07-11 20:13:25

标签: c++ linux

这不是其他问题的重复,因为我想在linux中完成。

我正在开发板上进行图像处理,为此,我正在我的笔记本电脑上进行测试/开发。在OpenCV中,有imshow()用于显示图像。但它只有在有监视器的情况下才有效。所以我想在调用之前检查一个监视器是否存在,以便在代码在PC上运行时调用它,而不是在它在板上运行时调用。

我该如何完成这项工作?

...
...
if(<only-if-monitor-is-present>)
  imshow(img);
...
...

2 个答案:

答案 0 :(得分:0)

您可以尝试将xset (user preference utility for X)-q标志一起使用:

  

q选项为您提供有关当前设置的信息。

我编写了一个使用该命令并解析输出的简单程序:

#include <cstdlib>
#include <iostream>

bool is_monitor_present() {
    int result = system("xset -q | tail -n1 | grep 'Monitor is On'");
    return result == 0;
}

int main() {
    bool found  = is_monitor_present();

    if(found) {
        std::cout << "Monitor is present." << std::endl;
    } else {
        std::cout << "Monitor absent." << std::endl;
    }
}

在笔记本电脑上的Linux Ubuntu 15.04上执行输出结果:

  

监控现在。

我的Raspberry上的相同代码,带有最新或几乎最新的Raspbian:

  

xset:无法打开显示&#34;&#34;

     

监视缺席。

我不建议在生产中使用此代码,但对于某些测试似乎工作正常。至少在Debians。

答案 1 :(得分:0)

以下是如何操作:

int MonitorNotPresent = system("xset -q | tail -n1 | grep On");
if(!WEXITSTATUS(MonitorNotPresent))
  imshow(img)

使用的标题:

cstdlib