Подтвердить что ты не робот

Получение размера экрана на OpenCV

Как получить разрешение экрана компьютера на OpenCV? Мне нужно показать два изображения бок о бок, используя всю ширину экрана, для OpenCV требуется точный размер окна, который я хочу создать.

4b9b3361

Ответ 1

Вы можете использовать это решение кроссплатформенное решение с или без 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);
}

Ответ 3

Вы не можете работать с ОС - это зависит от вашей операционной системы

Ответ 4

Это не ответ о том, как получить ширину и высоту экрана, но он позволит вам решить проблему отображения двух изображений с использованием полноэкранного размера.

1) Создайте окно, подобное этому:

namedWindow("hello", WINDOW_NORMAL);

Это позволит вам установить размер окна самостоятельно, вы можете легко установить его, и он займет весь экран. Он также запомнит настройки при следующем запуске программы. Вы также можете установить флаги, чтобы сохранить соотношение сторон, если хотите.

2) Если вам нужно получить точное количество пикселей, вы можете получить размер окна, используя это:

getWindowImageRect("hello");

Таким образом, вы можете легко объединить два изображения в одно и отобразить результат на экране. Я делаю это сам.

Ответ 5

В новой версии он также работает, как показано ниже: "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);