前言
这套yaml缓存流程即将被我的项目弃用,因为这两个实用工具的中文教程很少更别说结合使用的,就在这记录一下之前写的框架
使用原因是debug方便,弃用原因是存储占用和读取速度都不如二进制流
包含头文件
在opencv的cmake编译选项中filesystem被默认包含,include报错的检查一下编译选项
#include <opencv2/opencv.hpp>
#include <opencv2/core/utils/filesystem.hpp>
// 推荐重命名namespace
// namespace cvfs = cv::utils::fs;
SAVE
bool BPDatabase::saveCache(const cv::String& cacheDir)
{
if (!cv::utils::fs::exists(cacheDir))
{
cv::utils::fs::createDirectories(cacheDir);
}
cv::FileStorage cacheWriter(cv::utils::fs::join(cacheDir, "m_IDs.yaml"), cv::FileStorage::Mode::WRITE | cv::FileStorage::Mode::FORMAT_YAML);
if (!cacheWriter.isOpened())
{
return false;
}
cv::write(cacheWriter, "m_IDs", m_IDs);
return true;
}
LOAD
bool BPDatabase::loadCache(const cv::String& cacheDir)
{
cv::FileStorage cacheReader(cv::utils::fs::join(cacheDir, "m_IDs.yaml"), cv::FileStorage::Mode::READ | cv::FileStorage::Mode::FORMAT_YAML);
if (!cacheReader.isOpened())
{
return false;
}
cv::read(cacheReader["m_IDs"], m_IDs);
return true;
}