-
大小: 95.67MB文件類型: .rar金幣: 1下載: 0 次發布日期: 2023-03-02
- 語言: Matlab
- 標簽:
資源簡介
張正友相機標定Opencv實現,附棋盤格打印pdf和10張手機相機拍攝標定圖、20張攝像頭拍攝標定圖。 包含完整的VS2015工程代碼,有詳細的注釋說明,一鍵運行。實現了相機標定、輸出相機內參、外參、旋轉和平移矩陣、標定效果評價、以及使用標定結果對原始棋盤圖進行矯正。標定結果與Matlab的非常接近
代碼片段和文件信息
#include?
#include?
#include?
using?namespace?cv;
using?namespace?std;
int?main()
{
ifstream?fin(“phonecamera_data/calibdata.txt“);?/*?標定所用圖像文件的路徑?*/
ofstream?fout(“phonecamera_data/caliberation_result.txt“);??/*?保存標定結果的文件?*/
if?(!fin)?{
cout?<“Calibration?image?txt?read?failed“?< return?0;
}
//讀取每一幅圖像,從中提取出角點,然后對角點進行亞像素精確化?
cout?<“………………開始提取角點………………“?< int?image_count?=?0;??/*?圖像數量?*/
Size?patternSize?=?Size(8?6);????/*?標定板上每行、列的角點數,注意8和6的順序?*/
int?corner_count?=?patternSize.height?*?patternSize.width;
Size?imageSize;
vector?corners;??/*?緩存每幅圖像上檢測到的角點?*/
vector>?cornersList;?/*?保存檢測到的所有角點?*/
string?filename;
vector?filenameList;
while?(getline(fin?filename))?
{
image_count++;
filenameList.push_back(filename);
Mat?img?=?imread(filename);
if?(img.empty())?{
cout?<“讀取圖像失敗“?< }
if?(image_count?==?1)?{
imageSize.height?=?img.rows;
imageSize.width?=?img.cols;
cout?<“imageSize:?“?< }
cout?<“image:?“?<
//?提取角點
if?(findChessboardCorners(img?patternSize?corners)?==?0){
cout?<“can?not?find?chessboard?corners!\n“;?//找不到角點
exit(1);
}
else
{?
//?亞像素精確化
Mat?gray;
cvtColor(img?gray?COLOR_BGR2GRAY);
find4QuadCornerSubpix(gray?corners?Size(5?5));?//對粗提取的角點進行精確化
cornersList.push_back(corners);??//保存亞像素角點
cout?<“\t角點數量:?“?<
//?在圖像上顯示角點位置
drawChessboardCorners(img?patternSize?corners?true);?//用于在圖片中標記角點
namedWindow(“image“?0);
imshow(“image“?img);//顯示圖片
waitKey(500);//暫停0.5s?????
}
}
cout?<“………………角點提取完成………………“?<
//?以下是攝像機標定
cout?<“………………開始標定………………“?< //?棋盤三維信息
Size?squareSize?=?Size(28?28);??/*?實際測量得到的標定板上每個棋盤格的大小,單位mm?*/
vector>?objectPoints;?/*?保存標定板上角點的三維坐標?*/
//?內外參數
Mat?cameraMatrix?=?Mat(3?3?CV_32FC1?Scalar::all(0));?/*?攝像機內參數矩陣?*/
Mat?distCoeffs?=?Mat(1?5?CV_32FC1?Scalar::all(0));?/*?攝像機的5個畸變系數:k1k2p1p2k3?*/
vector?tvecsMat;?/*?每幅圖像的平移向量?*/
vector?rvecsMat;?/*?每幅圖像的旋轉向量?*/
//?初始化標定板上角點的三維坐標?
for?(int?t?=?0;?t {
vector?tempPointSet;
for?(int?i?=?0;?i {
for?(int?j?=?0;?j {
Point3f?realPoint;
/*?假設標定板放在世界坐標系中z=0的平面上?*/
realPoint.x?=?j?*?squareSize.width;
realPoint.y?=?i?*?squareSize.height;
realPoint.z?=?0;
tempPointSet.push_back(realPoint);
}
}
objectPoints.push_back(tempPointSet);
}
//?開始標定?
calibrateCamera(objectPoints?cornersList?imageSize?cameraMatrix?distCoeffs?rvecsMat?tvecsMat?0);
cout?<“………………標定完成………………“?<
//?對標定結果進行評價
cout?<“………………開始評價標定結果………………“?< double?total_err?=?0.0;?/*?所有圖像的平均誤差的總和?*/
double?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
????..A..H.?????29184??2019-03-01?11:35??camera_calibration\.vs\camera_calibration\v14\.suo
?????文件?????????63??2019-02-28?19:53??camera_calibration\camera_calibration\calibdata.bat
?????文件???????1411??2019-02-28?19:53??camera_calibration\camera_calibration\calibdata.txt
?????文件???????4040??2019-02-28?19:40??camera_calibration\camera_calibration\caliberation_result.txt
?????文件???????7388??2019-02-26?16:30??camera_calibration\camera_calibration\camera_calibration.vcxproj
?????文件????????945??2019-02-26?16:30??camera_calibration\camera_calibration\camera_calibration.vcxproj.filters
?????文件?????????51??2019-02-28?19:54??camera_calibration\camera_calibration\camera_data\calibdata.bat
?????文件???????1411??2019-02-28?19:54??camera_calibration\camera_calibration\camera_data\calibdata.txt
?????文件???????7892??2019-02-28?20:10??camera_calibration\camera_calibration\camera_data\caliberation_result.txt
?????文件??????60191??2019-02-27?19:58??camera_calibration\camera_calibration\camera_data\IMG1.jpg
?????文件??????63339??2019-02-27?20:00??camera_calibration\camera_calibration\camera_data\IMG10.jpg
?????文件??????69560??2019-02-27?20:00??camera_calibration\camera_calibration\camera_data\IMG11.jpg
?????文件??????69602??2019-02-27?20:00??camera_calibration\camera_calibration\camera_data\IMG12.jpg
?????文件??????60973??2019-02-27?20:00??camera_calibration\camera_calibration\camera_data\IMG13.jpg
?????文件??????62529??2019-02-27?20:00??camera_calibration\camera_calibration\camera_data\IMG14.jpg
?????文件??????66670??2019-02-27?20:00??camera_calibration\camera_calibration\camera_data\IMG15.jpg
?????文件??????64175??2019-02-27?20:00??camera_calibration\camera_calibration\camera_data\IMG16.jpg
?????文件??????62403??2019-02-27?20:00??camera_calibration\camera_calibration\camera_data\IMG17.jpg
?????文件??????65308??2019-02-27?20:00??camera_calibration\camera_calibration\camera_data\IMG18.jpg
?????文件??????65156??2019-02-27?20:00??camera_calibration\camera_calibration\camera_data\IMG19.jpg
?????文件??????56360??2019-02-27?19:59??camera_calibration\camera_calibration\camera_data\IMG2.jpg
?????文件??????63058??2019-02-27?20:00??camera_calibration\camera_calibration\camera_data\IMG20.jpg
?????文件??????68349??2019-02-27?19:59??camera_calibration\camera_calibration\camera_data\IMG3.jpg
?????文件??????68312??2019-02-27?19:59??camera_calibration\camera_calibration\camera_data\IMG4.jpg
?????文件??????60664??2019-02-27?19:59??camera_calibration\camera_calibration\camera_data\IMG5.jpg
?????文件??????67381??2019-02-27?19:59??camera_calibration\camera_calibration\camera_data\IMG6.jpg
?????文件??????69387??2019-02-27?19:59??camera_calibration\camera_calibration\camera_data\IMG7.jpg
?????文件??????67035??2019-02-27?19:59??camera_calibration\camera_calibration\camera_data\IMG8.jpg
?????文件??????66476??2019-02-27?19:59??camera_calibration\camera_calibration\camera_data\IMG9.jpg
?????文件??????54535??2019-02-28?20:10??camera_calibration\camera_calibration\camera_data\ud_IMG1.jpg
............此處省略96個文件信息
評論
共有 條評論