2016-12-09 4 views
0
  1. Как получить разрешение камеры? Может кто-нибудь дать мне некоторое предложение.
  2. Только я могу сделать следующее, но для получения разрешения требуется слишком много времени.
  3. последовательность взгляд Кодекса, как это: a.Open в camerra b.Change разрешения камеры, и проверить reusltКак получить разрешение камеры

    void GetResolution(const int& countOfCamera, resolution_t (&resoulationTemp)[MAX_RESOLUTION]){ 
    VideoCapture *pVideoCaptures[MAX_CAMERA] = {NULL}; 
    bool ret1 = false; 
    bool ret2 = false; 
    
    for (int j=0; j<countOfCamera; ++j) { 
        pVideoCaptures[j] = new VideoCapture(j); 
    
        /*========================================================================== 
        *If we don't do this, we will not open the Camera correctly 
        ===========================================================================*/ 
        pVideoCaptures[j]->set(CV_CAP_PROP_FRAME_WIDTH, defaultResolution.width); 
        pVideoCaptures[j]->set (CV_CAP_PROP_FRAME_HEIGHT, defaultResolution.height); 
    } 
    
    for (int i=0; i<MAX_RESOLUTION; ++i) { 
    
        for (int j=0; j<countOfCamera; ++j) { 
         ret1 = pVideoCaptures[j]->set(CV_CAP_PROP_FRAME_WIDTH, resolutions[i].width); 
         ret2 = pVideoCaptures[j]->set (CV_CAP_PROP_FRAME_HEIGHT, resolutions[i].height); 
    
         if (!(ret1 && ret2)) {        //The resolution is not OK 
          break;  //Check the next resolution 
         } else if (j == (countOfCamera -1)) {    //The resolution is OK for all camera,then store it. 
          resoulationTemp[i].width = resolutions[i].width; 
          resoulationTemp[i].height = resolutions[i].height; 
         } else { 
          //Do nothing 
         } 
        } 
    
    } 
    
    for (int j=0; j<countOfCamera; ++j)       //Release the memory 
    { 
        pVideoCaptures[j]->release(); 
    
        delete pVideoCaptures[j]; 
        pVideoCaptures[j] = NULL; 
    
    } 
    

    }

+0

Вы пробовали [это] (http://stackoverflow.com/questions/18458422/query-maximum-resolution-in-opencv)? – ikaro

ответ

0

К сожалению, нет удобного способа получить список разрешенных разрешений для конкретной камеры с помощью API opencv (поскольку он поддерживает так много платформ и так много видеозахватов). Даже ваш код будет страдать от этого, прочитайте источники videoio.hpp. Но большинство цифровых видеоустройств поддерживают стандартные разрешения, вы можете просто выбрать их. Другим способом получения фактического списка поддерживаемых форматов является использование сторонних библиотек, поскольку экземпляр Qt решает эту задачу несколькими вызовами.

Смежные вопросы