函数:保存和读取yaml格式数据

摄像机标定需要用到的数据有:图像的大小,特征点的图像坐标,特征点的世界坐标

 

saveFeaturePoints函数实现功能:

特征提取后存为文档,为了兼容,最好存为.yaml或.xml格式。但是下面的函数可以存储成任意后缀名,可以“发明”自己的后缀名,用eltraEdit都可以打开。

readFeaturePoints函数可以把数据读出来,以便后面的处理。

 

例如

int _tmain(int argc, char** argv )
{
 vector<Point2f> imagePt;
 vector<Point3f> objectPt;
 for(int i=0;i<10;i++)
  {
   imagePt.push_back(Point2f(12.345,54.321));
   objectPt.push_back(Point3f(12.345,54.321,67.890));

     }
 saveFeaturePoints("wyx.yaml",imagePt,objectPt);

 vector<Point2f> imagePt1;
 vector<Point3f> objectPt1;

 readFeaturePoints("wyx.yaml",imagePt1,objectPt1);
 saveFeaturePoints("wyx1read.yaml",imagePt1,objectPt1);
}

void saveFeaturePoints(
 const string& fileName,
// Size iSize,
 vector<Point2f> imagePt,
 vector<Point3f> objectPt
 )
{
 //Save feature points to FILE
 FileStorage fs(fileName, FileStorage::WRITE );
 //fs << "image_width" << iSize.width;
 //fs << "image_height" << iSize.height;
 fs << "image_points" << Mat(imagePt);
 fs << "object_points" <<Mat(objectPt);
}
bool readFeaturePoints(
 const string& fileName,
 //Size &iSize,
 vector<Point2f> &imagePt,
 vector<Point3f> &objectPt
 )
{
 FileStorage fs(fileName, FileStorage::READ);
 if (!fs.isOpened())
  return false;

//  imagePt.resize(0);
//  objectPt.resize(0);

//  fs["image_width"] >> iSize.width;
//  fs["image_height"] >> iSize.height;
 Mat imagePtMat;
 fs["image_points"] >> imagePtMat;
 imagePt=Mat_<Point2f>(imagePtMat);
 Mat objectPtMat;
 fs["object_points"] >> objectPtMat;
 objectPt=Mat_<Point3f>(objectPtMat);
 return true;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值