**示例:
做了適當修改
#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...