cv::Mat
保存された を保存して、cv::FileNode
反復している に読み込むのに問題があります。を使用して行列をファイルに書き込むことができます
// Data to save
std::vector<cv::Mat> masks;
masks.push_back(cv::Mat::ones(3,3,CV_8UC1));
masks.push_back(cv::Mat::zeros(2,2,CV_8UC1));
// Open file for writing
cv::FileStorage fs(file, cv::FileStorage::WRITE);
// Create node
fs << "data" << "[";
for (size_t i=0; i<masks.size(); ++i)
{
// Fill each node with data
fs << "{:";
// Write other data...
fs << "mask" << masks.at(i);
fs << "}";
}
fs << "]";
この方法でファイルを書き込んでも問題はありません。ただし、後でこのファイルを開くと、ハンドルされない例外が発生し、次のように出力されます。
OpenCV エラーの読み取り: 解析エラー (testPR.yml(7): Missing , between the element ts) in unknown function, file ......\modules\core\src\persistence.cpp、行 12 63
マトリックスを読むために、私はこれをやろうとしています:
// Open file for reading
cv::FileStorage fs(file, cv::FileStorage::READ); ///< This causes an exception
// Open node
cv::FileNode d = fs["data"];
cv::FileNodeIterator it = d.begin(), it_end = d.end();
for( ; it!= it_end; ++it)
{
// Read other data...
cv::Mat mask;
(*it)["mask"] >> mask;
}
確かに、この方法で行列をノードに保存/読み取ることは可能ですよね?