这不是其他问题的重复,因为我想在linux中完成。
我正在开发板上进行图像处理,为此,我正在我的笔记本电脑上进行测试/开发。在OpenCV中,有imshow()
用于显示图像。但它只有在有监视器的情况下才有效。所以我想在调用之前检查一个监视器是否存在,以便在代码在PC上运行时调用它,而不是在它在板上运行时调用。
我该如何完成这项工作?
...
...
if(<only-if-monitor-is-present>)
imshow(img);
...
...
答案 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