在OpenCV上获取屏幕大小

时间:2012-06-14 21:27:44

标签: opencv screen resolution

如何在OpenCV上获得计算机屏幕分辨率? 我需要使用整个屏幕宽度并排显示两个图像,OpenCV需要我想要的确切窗口大小。

6 个答案:

答案 0 :(得分:6)

您可以使用此解决方案跨平台解决方案,无论是否有opencv:

#if WIN32
  #include <windows.h>
#else
  #include <X11/Xlib.h>
#endif

//...

void getScreenResolution(int &width, int &height) {
#if WIN32
    width  = (int) GetSystemMetrics(SM_CXSCREEN);
    height = (int) GetSystemMetrics(SM_CYSCREEN);
#else
    Display* disp = XOpenDisplay(NULL);
    Screen*  scrn = DefaultScreenOfDisplay(disp);
    width  = scrn->width;
    height = scrn->height;
#endif
}

int main() {
    int width, height;
    getScreenResolution(width, height);
    printf("Screen resolution: %dx%d\n", width, height);
}

答案 1 :(得分:5)

在Linux中, 试试这个

#include <stdio.h>
int main()
{
 char *command="xrandr | grep '*'";
 FILE *fpipe = (FILE*)popen(command,"r");
 char line[256];
 while ( fgets( line, sizeof(line), fpipe))
 {
  printf("%s", line);
 }
 pclose(fpipe);
 return 0;
}

在Windows中,

http://cppkid.wordpress.com/2009/01/07/how-to-get-the-screen-resolution-in-pixels/

答案 2 :(得分:2)

使用 opencv 代替操作系统函数:

cv.namedWindow("dst", cv.WND_PROP_FULLSCREEN)
cv.setWindowProperty("dst",cv.WND_PROP_FULLSCREEN,cv.WINDOW_FULLSCREEN)
(a,b,screenWidth,screenHeight) = cv.getWindowImageRect('dst')

所以我在全屏模式下创建一个窗口并询问它的宽度和高度

它应该适用于任何操作系统,但它只适用于 Windows。在 Linux 下,窗口不是全屏的。

答案 3 :(得分:1)

这不是如何获得屏幕宽度和高度的答案,但是它将解决您使用全屏尺寸显示两个图像的问题。

1)创建一个这样的窗口:

namedWindow("hello", WINDOW_NORMAL);

这将允许您自己设置窗口大小,可以轻松设置最大化,它将占用整个屏幕。它还会在下次运行程序时记住这些设置。如果需要,还可以设置标志以保持宽高比。

2)如果需要获取确切的像素数,则可以使用以下方法获取窗口大小:

getWindowImageRect("hello");

这样,您可以轻松地将两个图像合并为一个并在屏幕上显示结果。我自己做。

答案 4 :(得分:0)

你不能这是一个操作系统功能 - 它取决于你的操作系统

答案 5 :(得分:-1)

在新版本中,它的工作方式如下,非常棒:-D

printf("%f",cap.get(CV_CAP_PROP_FRAME_HEIGHT));

用于设置视频资源。

<capture_handle>.set(property_in_caps, value_in_double);

ex, cap.set(CV_CAP_PROP_FRAME_HEIGHT, 720);