1.opencv保存图片cv::imwrite,如果不设置参数CV_IMWRITE_PNG_COMPRESSION,默认会压缩3倍。
2.追加内容写txt文件,打开文件时需指定打开模式为ios::app。
具体代码如下:
template<typename T>
string toString(const T &t) {
ostringstream oss;
oss << t;
return oss.str();
}
string dir = "/storage/emulated/0/VSLAM/";
string img_txt = dir + "img.txt";
string imu_txt = dir + "imu.txt";
void saveFile(const Mat &grayImg, long timeStamp, std::vector<IMU_FRAME> imuData) {
if (grayImg.empty()) {
return;
}
std::vector<int> compression_params;
compression_params.push_back(CV_IMWRITE_PNG_COMPRESSION);
compression_params.push_back(0);
string picName = toString(timeStamp) + ".png";
cv::imwrite(dir + picName, grayImg, compression_params);
ofstream f;
f.open(img_txt.c_str(), ios::app);
f << timeStamp << "," << picName << endl;
f.close();
f.open(imu_txt.c_str(), ios::app);
for (int i = 0; i < 4; ++i) {
f << imuData[i].timeStamp << ","
<< imuData[i].ang_v[0] << ","
<< imuData[i].ang_v[1] << ","
<< imuData[i].ang_v[2] << ","
<< imuData[i].accel[0] << ","
<< imuData[i].accel[1] << ","
<< imuData[i].accel[1] << endl;
}
f.close();
}