我正在使用openCV,我有一个类型为CV_32F的95,1 mat对象,我想写一个二进制文件。我正在使用下面的代码但是我不能将32F转换为char类型。有什么建议吗?我还想执行读取二进制文件并将值存储到相同类型的mat对象的相反过程。
try{
ofstream posBinary;
posBinary.open("C:/Users/Dr.Mollica/Documents/TSR Datasets/signDatabasePublicFramesOnly/posSamps.bin", ios::out | ios::binary);
posBinary.write((char *)featureVector, sizeof(featureVector);
}
catch (exception X){ cout << "Error! Could not write Binary file" << endl; }
另外需要注意的是,我想在二进制文件中执行此操作的原因是我将向文件中写入大量这些向量,这些向量将被读入机器学习算法。从我的理解,读取和写入二进制文件是最快的方法。
答案 0 :(得分:7)
我建议您使用OpenCV API将cv::Mat
写入 xml 或 yml 文件,稍后您可以从中查看cv::Mat
他们很容易。
例如:
cv::Mat yourMatData;
// write Mat to file
cv::FileStorage fs("file.yml", cv::FileStorage::WRITE);
fs << "yourMat" << yourMatData;
// read Mat from file
cv::FileStorage fs2("file.yml", FileStorage::READ);
fs2["yourMat"] >> yourMatData;
已更新:如果您希望在二进制文件中写入/读取它们,可以先将cv::Mat
转换为数组/向量。然后将数组/向量写入文件。
要继续阅读,请查看Convert Mat to Array/Vector in OpenCV。