OpenCV單目攝像頭標定

2021-08-09 06:18:13 字數 3176 閱讀 9394

**示例:

做了適當修改

#include 

#include

#include "cv.h"

#include

#include

using

namespace

std;

using

namespace cv;

const

int imagewidth = 640; //攝像頭的解析度

const

int imageheight = 480;

const

int boardwidth = 9; //橫向的角點數目

const

int boardheight = 6; //縱向的角點資料

const

int boardcorner = boardwidth * boardheight; //總的角點資料

const

int framenumber = 13; //相機標定時需要採用的影象幀數

const

int squaresize = 20; //標定板黑白格仔的大小 單位mm

const size boardsize = size(boardwidth, boardheight); //

mat intrinsic; //相機內引數

mat distortion_coeff; //相機畸變引數

vector

rvecs; //旋轉向量

vector

tvecs; //平移向量

vector

> corners; //各個影象找到的角點的集合 和objrealpoint 一一對應

vector

> objrealpoint; //各副影象的角點的實際物理座標集合

vector

corner; //某一副影象找到的角點

mat rgbimage, grayimage;

/*計算標定板上模組的實際物理座標*/

void calrealpoint(vector

>& obj, int boardwidth, int boardheight, int imgnumber, int squaresize)

}for (int imgindex = 0; imgindex < imgnumber; imgindex++)

}/*設定相機的初始引數 也可以不估計*/

void guesscameraparam(void)

void outputcameraparam(void)

int main(int argc, char argv)

else

// cout << "press any key to continue..." << endl;

// waitkey(0);

if (waitkey(10) == 'q')

// imshow("chessboard", rgbimage); }/*

影象採集完畢 接下來開始攝像頭的校正

calibratecamera()

輸入引數 objectpoints 角點的實際物理座標

imagepoints 角點的影象座標

imagesize 影象的大小

輸出引數

cameramatrix 相機的內參矩陣

distcoeffs 相機的畸變引數

rvecs 旋轉向量(外引數)

tvecs 平移向量(外引數)

*//*設定實際初始引數 根據calibratecamera來 如果flag = 0 也可以不進行設定*/

guesscameraparam();

cout

<< "guess successful"

<< endl;

/*計算實際的校正點的三維座標*/

calrealpoint(objrealpoint, boardwidth, boardheight, framenumber, squaresize);

cout

<< "cal real successful"

<< endl;

/*標定攝像頭*/

calibratecamera(objrealpoint, corners, size(imagewidth, imageheight), intrinsic, distortion_coeff, rvecs, tvecs, 0);

cout

<< "calibration successful"

<< endl;

/*儲存並輸出引數*/

outputcameraparam();

cout

<< "out successful"

<< endl;

/*顯示畸變校正效果*/

mat cimage;

undistort(rgbimage, cimage, intrinsic, distortion_coeff);

imshow("corret image", cimage);

cout

<< "correct image"

<< endl;

cout

<< "wait for key"

<< endl;

waitkey(0);

system("pause");

return

0;}

opencv 雙目攝像頭標定

我用的是opencv官方的例程,花了一天把 大致注釋了下,但是雙目感覺好難,很多地方都不懂,都是在大佬們的部落格找的資料 下面是對例程使用的說明 雙目攝像頭矯正就是為了 可以自己拍攝13張左相機,13張右相機進行代替 ps 名稱需要和.xml檔案中的對應 opencv的攝像機標定採用通用的棋盤標定模...

攝像頭標定

void calrealpoint std vector obj,int boardwidth,int boardheight,int imgnumber,int squaresize for int imgindex 0 imgindex imgnumber imgindex void camer...

攝像頭標定

void calrealpoint std vector obj,int boardwidth,int boardheight,int imgnumber,int squaresize for int imgindex 0 imgindex imgnumber imgindex void camer...