如何在OpenCV上获得计算机屏幕分辨率? 我需要使用整个屏幕宽度并排显示两个图像,OpenCV需要我想要的确切窗口大小。
答案 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);