我無法保存和讀保存到我正在迭代的cv::FileNode
。我可以將矩陣寫入文件使用從OpenCV保存/讀矩陣FileNodeIterator
// 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 << "]";
以這種方式寫入文件不會導致問題。然而,隨後打開此文件導致未處理的異常,其打印:
Reading OpenCV Error: Parsing error (testPR.yml(7): Missing , between the elemen ts) in unknown function, file ......\modules\core\src\persistence.cpp, line 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;
}
當然它可能保存/讀取矩陣中的一個節點這種方式,不是嗎?