14

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

4

6 回答 6

8

您可以在有或没有 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);
}
于 2018-05-07T00:36:39.207 回答
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/

于 2012-06-15T04:23:59.877 回答
2

使用 opencv 而不是 OS 函数:

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 下,窗口不是全屏的。

于 2021-02-09T08:22:58.933 回答
2

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

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

namedWindow("hello", WINDOW_NORMAL);

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

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

getWindowImageRect("hello");

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

于 2019-05-22T21:20:40.630 回答
0

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

于 2012-06-14T23:07:54.307 回答
-2

在新版本中,它也可以像下面这样工作,这很棒:-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);
于 2013-03-06T18:58:47.813 回答