基於opnecv的常用功能函式及其相關函式

2021-09-02 17:20:24 字數 4185 閱讀 2297

}只有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...