2011-07-15 20 views
6

Tengo los parámetros de calibración estéreo de dos cámaras diferentes (resoluciones diferentes). Quiero utilizar estos datos para la rectificación estéreo y calcular el mapa de disparidad. El problema es que las imágenes de las dos cámaras tienen diferentes tamaños y no sé cómo especificar estos tamaños. cvStereoRectify toma solo un tamaño, suponiendo que ambas imágenes son del mismo tamaño.Rectificación estéreo de dos cámaras diferentes en OpenCv

Cualquier sugerencia en este sentido será muy apreciada.

Saludos,

Khan

+0

Si agrega las imágenes y su información de calibración estéreo, que hará que sea más fácil para las personas que responden a este problema para verificar sus soluciones. – misha

Respuesta

1

¿Ha intentado utilizar una región de interés en la cámara de mayor resolución? Por ejemplo, supongamos que tiene una cámara de 640x480 y una cámara de 800x600. Puede hacer lo siguiente:

VideoCapture videoLo(LOW), videoHi(HIGH); 
Mat loRes, hiRes; 

Point hiCenter(hiRes.size().width/2, hiRes.size().height/2); 

int key = 0; 
do 
{ 
    videoLo >> loRes; 
    videoHi >> hiRes; 

    // this will give you the center 640x480 of the high res image. 
    Mat hiResWin(hiRes, Rect(hiCenter.x - loRes.size().width/2, 
          hiCenter.y - loRes.size().height/2, 
          loRes.size().width, 
          loRes.size().height)); 

    key = waitKey(33); 
} while((char)key != 27); 

Espero que sea útil!

1

Me enfrenté al mismo problema una vez cuando realicé la calibración estéreo. Se puede resolverse ajustando el tamaño de la imagen parámetros de

captureR = cvCreateCameraCapture(0); // from camera 1 
    cvSetCaptureProperty(captureR, CV_CAP_PROP_FRAME_WIDTH, 640); 
    cvSetCaptureProperty(captureR, CV_CAP_PROP_FRAME_HEIGHT, 480); 
    if(!captureR) { printf("\nCouldn't open the camera1\n"); return -1;} 
    captureL = cvCreateCameraCapture(1); //from camera 2 
    cvSetCaptureProperty(captureL, CV_CAP_PROP_FRAME_WIDTH, 640); 
    cvSetCaptureProperty(captureL, CV_CAP_PROP_FRAME_HEIGHT, 480); 
    if(!captureL) { printf("\nCouldn't open the camera2\n"); return -1;} 
Cuestiones relacionadas