2011-07-15 20 views
6

İki farklı kameranın stereo kalibrasyon parametrelerine sahibim (farklı çözünürlükler). Bu verileri stereo düzeltme ve eşitsizlik haritasının hesaplanması için kullanmak istiyorum. Sorun şu ki, iki kameradan gelen görüntülerin farklı boyutları var ve bu boyutları nasıl belirleyeceğimi bilmiyorum. cvStereoRectify, her iki görüntünün de aynı boyutta olduğu varsayılarak yalnızca tek bir boyut alır.Stereo İki farklı kameranın OpenCv'de düzeltilmesi

Bu konuda herhangi bir öneri çok takdir edilecektir.

Selamlar,

Han

+0

parametreleri, onların çözümlerini doğrulamak için bu sorunu yanıtlayan kişiler için daha kolay hale getirecek. – misha

cevap

1

daha yüksek çözünürlükte kameraya ilgi bir bölge kullanılarak denediniz mi? Örneğin, 640x480 kamera ve 800x600 kamera olduğunu varsayalım. Aşağıdaki yapabilir:

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); 

Umut yararlı olduğunu!

1

Stereo kalibrasyon gerçekleştirirken aynı problemle karşılaştım. Eğer görüntü ve onların stereo kalibrasyon bilgilerini eklerseniz Bu görüntü boyutunu ayarlayarak çözülebilir

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;}