如何在OpenCV中获取计算机屏幕分辨率? 我需要使用整个屏幕宽度并排显示两张图片,但OpenCV需要精确的窗口尺寸。
如何在OpenCV中获取计算机屏幕分辨率? 我需要使用整个屏幕宽度并排显示两张图片,但OpenCV需要精确的窗口尺寸。
您可以使用此跨平台解决方案,无论是否使用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);
}
使用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')
我创建了一个全屏窗口并请求其宽度和高度。
这应该适用于任何操作系统,但在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中,
这个链接介绍了如何获取屏幕分辨率的像素值。
namedWindow("hello", WINDOW_NORMAL);
这将允许您自己设置窗口大小,您可以轻松地将其最大化并占据整个屏幕。它还会记住下次运行程序时的设置。如果需要,您还可以设置标志以保持纵横比。
2)如果您需要获取确切的像素数,可以使用以下方法获取窗口大小:
getWindowImageRect("hello");
这样,您可以轻松地将两个图像合并成一个,并在屏幕上显示结果。我自己正在这样做。
原始答案:最初的回答。
你无法做到这一点,因为它是一个操作系统功能 - 它取决于你的操作系统。
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);