雙目標(biāo)定(二)

取材自己標(biāo)定

按照官網(wǎng)標(biāo)定例程,我們需要制作20對(duì)左右的棋盤圖

take_pictures.cpp

#include <opencv2/opencv.hpp>
#include <string>
using namespace cv;
int main(){
    VideoCapture capture(0);
    capture = VideoCapture(CV_CAP_DSHOW);
    capture.set(CV_CAP_PROP_FOURCC, CV_FOURCC('M', 'J', 'P', 'G'));
    capture.set(CV_CAP_PROP_FRAME_WIDTH,1280);
    capture.set(CV_CAP_PROP_FRAME_HEIGHT,480);
    int key;
    int i=0;    //圖片數(shù)
    int j=0;    //視頻數(shù)
    char picture_left_name[100];//左視圖圖片文件名
    char picture_right_name[100]; //右視圖圖片文件名
    char vName[100];//視頻文件名    
    while(1){ 
    Mat src_frame;//源幀

    Mat image_left,image_right; //雙目左右視圖
    Rect left_rect(0,0,640,480); //左框圖
    Rect right_rect(640,0,640,480); //右框圖

    //namedWindow("Camera");
    capture>>src_frame;
    //此步在于分離左右視圖,并將其存入image_left與image_right
    //方便標(biāo)定使用
    //opencv的stereoCalib是分左右單目標(biāo)定,分離方便標(biāo)定
    image_left = Mat(src_frame,left_rect).clone();
    image_right = Mat(src_frame,right_rect).clone();

    if((key=waitKey(33))!=-1){

        //按P鍵拍照
        if(key=='p' || key == 'P'){ 
            sprintf(picture_left_name,"photos/left%d.jpg",i);
            imwrite(picture_left_name, image_left);
            sprintf(picture_right_name,"photos/right%d.jpg",i);
            imwrite(picture_right_name,image_right);  
            while(key==waitKey(33)==-1);
            i++;
        }



        //視頻錄制,按V鍵錄制
        // if(key=='v' || key == 'V'){
        //     destroyWindow("Camera");
        //     sprintf(vName,"video/%d.avi",j);    
        //     //寫入視頻格式avi
        //     VideoWriter writer(vName, CV_FOURCC('M', 'J', 'P', 'G'), 25.0, Size(640, 480));
        //     do
        //     {   
        //     capture>>src_frame;
        //     writer<<src_frame;
        //     imshow("Record",src_frame);
        //     }
        //     while((key=waitKey(33))==-1);
        //     j++;
        //     destroyWindow("Record");
        // }
    }
    imshow("Left",image_left);
    imshow("right",image_right);
    char esc_key = (char)waitKey(33);
    if(esc_key == 27 || esc_key == 'q' || esc_key == 'Q')
    break;
    }
return 0;
}

對(duì)于采集程序的說明

  • 相機(jī)首先要擺好(水平)
  • 需要在take_pictures.exe同級(jí)目錄下建立photos文件夾
  • 可能需要編譯完成后在運(yùn)行,此程序最好不要直接點(diǎn)擊調(diào)試運(yùn)行(有一定幾率按P鍵拍不了照)。
  • 按P鍵拍照,照片是成對(duì)存放在photos目錄下,Q鍵退出程序。
  • 標(biāo)定選用的照片質(zhì)量好,則標(biāo)定的結(jié)果誤差小。
  • 將選好的照片路徑添加到stereo_calib.xml中。

運(yùn)行stereo_calib.exe按照雙目標(biāo)定(一)中的內(nèi)容進(jìn)行標(biāo)定即可生成內(nèi)參和外參矩陣文件。intrinsics.yml,extrinsics.yml

注意:標(biāo)定選取的照片對(duì)數(shù)為奇數(shù)對(duì)?。?!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容