資源簡介
代碼對應(yīng)于本人博客
http://blog.csdn.net/bcj296050240/article/details/52778741。
博客中詳細描述了該項目中各段代碼的用途。該代碼可以實現(xiàn)雙目視覺標定和立體匹配、視差計算、深度圖生成等功能。并配有標定圖片。歡迎交流
代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
using?namespace?cv;
using?namespace?std;
typedef?unsigned?int?uint;
Size?imgSize(1280?720);
Size?patSize(14?12);???????????//每張棋盤尋找的角點個數(shù)是14*12個
const?double?patLen?=?5.0f;????//?unit:?mm??標定板每個格的寬度(金屬標定板)
double?imgScale?=?1.0;??????????//圖像縮放的比例因子
//將要讀取的圖片路徑存儲在fileList中
vector?fileList;
void?initFileList(string?dir?int?first?int?last){
fileList.clear();
for(int?cur?=?first;?cur?<=?last;?cur++){
string?str_file?=?dir?+?“/“?+?to_string(cur)?+?“.jpg“;
fileList.push_back(str_file);
}
}
//?生成點云坐標后保存
static?void?saveXYZ(string?filename?const?Mat&?mat)
{
????const?double?max_z?=?1.0e4;
????ofstream?fp(filename);
if?(!fp.is_open())
????{??
?????????std::cout<<“打開點云文件失敗“< ?????????fp.close();??
?return?;
????}??
//遍歷寫入
????for(int?y?=?0;?y?????{
????????for(int?x?=?0;?x?????????{
????????????Vec3f?point?=?mat.at(y?x);???//三通道浮點型
????????????if(fabs(point[2]?-?max_z)??max_z)???
continue;???
????????????fp< ????????}
????}
fp.close();
}
//?存儲視差數(shù)據(jù)
void?saveDisp(const?string?filename?const?Mat&?mat)
{
ofstream?fp(filename?ios::out);
fp< fp< for(int?y?=?0;?y? {
for(int?x?=?0;?x? {
double?disp?=?mat.at(y?x);?//?這里視差矩陣是CV_16S?格式的,故用?short?類型讀取
fp< }
}
fp.close();
}
void?F_Gray2Color(Mat?gray_mat?Mat&?color_mat)
{
color_mat?=?Mat::zeros(gray_mat.size()?CV_8UC3);
int?rows?=?color_mat.rows?cols?=?color_mat.cols;
Mat?red?=?Mat(gray_mat.rows?gray_mat.cols?CV_8U);
Mat?green?=?Mat(gray_mat.rows?gray_mat.cols?CV_8U);
Mat?blue?=?Mat(gray_mat.rows?gray_mat.cols?CV_8U);
Mat?mask?=?Mat(gray_mat.rows?gray_mat.cols?CV_8U);
subtract(gray_mat?Scalar(255)?blue);?????????//?blue(I)?=?255?-?gray(I)
red?=?gray_mat.clone();????????????????????????//?red(I)?=?gray(I)
green?=?gray_mat.clone();??????????????????????//?green(I)?=?gray(I)if?gray(I)?128
compare(green?128?mask?CMP_GE);?????????????//?green(I)?=?255?-?gray(I)?if?gray(I)?>=?128
subtract(green?Scalar(255)?green?mask);
convertScaleAbs(green?green?2.0?2.0);
vector?vec;
vec.push_back(red);
vec.push_back(green);
vec.push_back(blue);
cv::merge(vec?color_mat);
}
Mat?F_mergeImg(Mat?img1?Mat?disp8){
Mat?color_mat?=?Mat::zeros(img1.size()?CV_8UC3);
Mat?red?=?img1.clone(
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????311296??2016-10-10?15:01??雙目立體標定與測量\深度測量9-18\Debug\深度測量9-18.exe
?????文件????3001292??2016-10-10?15:01??雙目立體標定與測量\深度測量9-18\Debug\深度測量9-18.ilk
?????文件????4205568??2016-10-10?15:01??雙目立體標定與測量\深度測量9-18\Debug\深度測量9-18.pdb
?????文件?????118193??2016-09-29?22:49??雙目立體標定與測量\深度測量9-18\深度測量9-18\calib_pic\1.jpg
?????文件?????116716??2016-09-29?22:49??雙目立體標定與測量\深度測量9-18\深度測量9-18\calib_pic\10.jpg
?????文件?????117519??2016-09-29?22:49??雙目立體標定與測量\深度測量9-18\深度測量9-18\calib_pic\11.jpg
?????文件?????120710??2016-09-29?22:49??雙目立體標定與測量\深度測量9-18\深度測量9-18\calib_pic\12.jpg
?????文件?????123909??2016-09-29?22:49??雙目立體標定與測量\深度測量9-18\深度測量9-18\calib_pic\13.jpg
?????文件?????119138??2016-09-29?22:49??雙目立體標定與測量\深度測量9-18\深度測量9-18\calib_pic\14.jpg
?????文件?????124350??2016-09-29?22:49??雙目立體標定與測量\深度測量9-18\深度測量9-18\calib_pic\15.jpg
?????文件?????123276??2016-09-29?22:49??雙目立體標定與測量\深度測量9-18\深度測量9-18\calib_pic\16.jpg
?????文件?????122096??2016-09-29?22:49??雙目立體標定與測量\深度測量9-18\深度測量9-18\calib_pic\17.jpg
?????文件?????125637??2016-09-29?22:49??雙目立體標定與測量\深度測量9-18\深度測量9-18\calib_pic\18.jpg
?????文件?????124065??2016-09-29?22:49??雙目立體標定與測量\深度測量9-18\深度測量9-18\calib_pic\19.jpg
?????文件?????119800??2016-09-29?22:49??雙目立體標定與測量\深度測量9-18\深度測量9-18\calib_pic\2.jpg
?????文件?????122747??2016-09-29?22:49??雙目立體標定與測量\深度測量9-18\深度測量9-18\calib_pic\20.jpg
?????文件?????126737??2016-09-29?22:49??雙目立體標定與測量\深度測量9-18\深度測量9-18\calib_pic\21.jpg
?????文件?????129057??2016-09-29?22:49??雙目立體標定與測量\深度測量9-18\深度測量9-18\calib_pic\22.jpg
?????文件?????119591??2016-09-29?22:49??雙目立體標定與測量\深度測量9-18\深度測量9-18\calib_pic\23.jpg
?????文件?????125547??2016-09-29?22:49??雙目立體標定與測量\深度測量9-18\深度測量9-18\calib_pic\24.jpg
?????文件?????122488??2016-09-29?22:49??雙目立體標定與測量\深度測量9-18\深度測量9-18\calib_pic\25.jpg
?????文件?????121488??2016-09-29?22:49??雙目立體標定與測量\深度測量9-18\深度測量9-18\calib_pic\26.jpg
?????文件?????116381??2016-09-29?22:49??雙目立體標定與測量\深度測量9-18\深度測量9-18\calib_pic\3.jpg
?????文件?????116875??2016-09-29?22:49??雙目立體標定與測量\深度測量9-18\深度測量9-18\calib_pic\4.jpg
?????文件?????123037??2016-09-29?22:49??雙目立體標定與測量\深度測量9-18\深度測量9-18\calib_pic\5.jpg
?????文件?????123287??2016-09-29?22:49??雙目立體標定與測量\深度測量9-18\深度測量9-18\calib_pic\6.jpg
?????文件?????128970??2016-09-29?22:49??雙目立體標定與測量\深度測量9-18\深度測量9-18\calib_pic\7.jpg
?????文件?????123694??2016-09-29?22:49??雙目立體標定與測量\深度測量9-18\深度測量9-18\calib_pic\8.jpg
?????文件?????117036??2016-09-29?22:49??雙目立體標定與測量\深度測量9-18\深度測量9-18\calib_pic\9.jpg
?????文件?????217519??2016-09-29?10:57??雙目立體標定與測量\深度測量9-18\深度測量9-18\Debug\camera_cap.obj
............此處省略495個文件信息
評論
共有 條評論