2011-07-15 6 views
6

私は2つの異なるカメラ(異なる解像度)のステレオ較正パラメータを持っています。私はこのデータをステレオ整流とディスパリティマップの計算に使用したいと思います。問題は、2台のカメラからの画像が異なるサイズを持ち、これらのサイズを指定する方法がわからないことです。両方の画像が同じサイズであると仮定して、cvStereoRectifyは単一のサイズのみを取ります。OpenCvでの2つの異なるカメラのステレオ調整

この点に関するご意見は高く評価されます。

よろしく、

カーン

+0

パラメータ、それは彼らのソリューションを検証するために、この問題に答える人々のためにそれが容易になります。 – misha

答えて

1

を使用すると、高解像度のカメラに関心領域を使用してみましたか?たとえば、640x480カメラと800x600カメラがあるとします。次の操作を行うことがあります。

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

1

ステレオキャリブレーションを実行するときに同じ問題が1回発生しました。あなたがイメージとそのステレオキャリブレーション情報を追加する場合 それは画像サイズを設定することで解決することができる

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;} 
関連する問題