}只有32位可以編譯
來自網路
void getfiles(string path, vector& files)
//如果不是,加入列表 ,這裡進行了判斷,只有是.jpg的檔案才加入列表
else
} while (_findnext(hfile, &fileinfo) == 0);
//_findclose函式結束查詢
_findclose(hfile);
}}
呼叫後需要使用waitkey。
void imageshow(mat draw, float scale, string str)
bool usecamera()
mat frame;
while (1)
return 0;
}
struct circledata
;circledata findcircle1(point2f pt1, point2f pt2, point2f pt3)
來自網路
int filterradius = 20;
int filtersize = 2 * filterradius + 1;
double sigma = 10;
vector> smooth(vector> contours)
// filter 1-d signals
vectorxfilt, yfilt;
gaussianblur(x, xfilt, size(filtersize, filtersize), sigma, sigma);
gaussianblur(y, yfilt, size(filtersize, filtersize), sigma, sigma);
// build smoothed contour
vectorsmooth;
for (size_t i = filterradius; i < contours[j].size() + filterradius; i++)
smoothcontours.push_back(smooth);
} return smoothcontours;
}
#define board_scale 9.73 /* 實際測量得到的標定板上每個棋盤格的大小,單位是mm*/
#define board_height 12
#define board_width 18
#include void calibration()
//讀取每一幅影象,從中提取出角點,然後對角點進行亞畫素精確化
cout << "開始提取角點………………" << endl;
int image_count = 0; /* 影象數量 */
size image_size; /* 影象的尺寸 */
size board_size = size(board_height, board_width); /* 標定板上每行、列的角點數 */
vectorimage_points_buf; /* 快取每幅影象上檢測到的角點 */
vector> image_points_seq; /* 儲存檢測到的所有角點 */
for (int i = 0; i < files.size(); i++)
else
}int total = image_points_seq.size();
cout << "共使用了" << total << "幅" << endl;
cout << "角點提取完成!\n";
cout << "開始標定………………\n";
/*棋盤三維資訊*/
vector> object_points; /* 儲存標定板上角點的三維座標 */
/*內外引數*/
mat cameramatrix = mat(3, 3, cv_32fc1, scalar::all(0)); /* 攝像機內引數矩陣 */
vectorpoint_counts; // 每幅影象中角點的數量
mat distcoeffs = mat(1, 8, cv_32fc1, scalar::all(0)); /* 攝像機的5個畸變係數:k1,k2,p1,p2,k3 */
vectortvecsmat; /* 每幅影象的旋轉向量 */
vectorrvecsmat; /* 每幅影象的平移向量 */
/* 初始化標定板上角點的三維座標 */
int i, j, t;
for (t = 0; t < image_count; t++)
}object_points.push_back(temppointset);
} /* 初始化每幅影象中的角點數量,假定每幅影象中都可以看到完整的標定板 */
for (i = 0; i < image_count; i++)
/* 開始標定 */
calibratecamera(object_points, image_points_seq, image_size, cameramatrix, distcoeffs, rvecsmat, tvecsmat, cv_calib_rational_model);
cout << "標定完成!\n";
clock_t ends = clock();
cout << "running time : " << (double)(ends - start) / clocks_per_sec << endl;
//對標定結果進行評價
ofstream fout("caliberation_result.txt"); /* 儲存標定結果的檔案 */
double total_err = 0.0; /* 所有影象的平均誤差的總和 */
double err = 0.0; /* 每幅影象的平均誤差 */
vectorimage_points2; /* 儲存重新計算得到的投影點 */
cout << "\t每幅影象的標定誤差:\n";
fout << "每幅影象的標定誤差:\n";
for (i = 0; i < image_count; i++)
err = norm(image_points2mat, tempimagepointmat, norm_l2);
total_err += err /= point_counts[i];
cout << "第" << files[i] << "幅影象的平均誤差:" << err << "畫素" << endl;
fout << "第" << files[i] << "幅影象的平均誤差:" << err << "畫素" << endl;
} cout << "總體平均誤差:" << total_err / image_count << "畫素" << endl;
fout << "總體平均誤差:" << total_err / image_count << "畫素" << endl << endl;
//儲存定標結果
cout << "開始儲存定標結果………………" << endl;
mat rotation_matrix = mat(3, 3, cv_32fc1, scalar::all(0)); /* 儲存每幅影象的旋轉矩陣 */
fout << "相機內引數矩陣:" << endl;
fout << cameramatrix << endl << endl;
fout << "畸變係數:\n";
fout << distcoeffs << endl << endl << endl;
for (int i = 0; i < image_count; i++)
cout << "完成儲存" << endl;
fout << endl;
//畸變矯正
for (int i = 0; i < image_count; i++)
}
Python常用功能函式
1.字串反轉 字串反轉 string 字串變數 staticmethod def str reverse string result string 1 return result 2.刪除首尾指定的字元 刪除首尾指定的字元 string 字串變數 rm 要刪除的字元,預設為空格 staticmeth...
jquery常用功能函式
1.運算元組和物件 主要包括元素的遍歷,篩選,合併等 1 遍歷each 格式 each object,fn object是要遍歷的物件。fn是遍歷所有物件所要執行的函式,可以接受兩個引數 1.陣列物件的屬性或者元素序號 2.屬性或者元素的值 例如 html 輸出每個列表項的值jquery butto...
js jq 的常用功能
js的新增屬性和移除屬性 新增 document.getelementbyid down setattribute disabled true 移除 document.getelementbyid up removeattribute disabled jq的新增屬性和移除屬性 新增 up attr...