OpenCV filesystem配合filestorage实现多类型数据缓存

前言

这套yaml缓存流程即将被我的项目弃用,因为这两个实用工具的中文教程很少更别说结合使用的,就在这记录一下之前写的框架
使用原因是debug方便,弃用原因是存储占用和读取速度都不如二进制流

包含头文件

在opencv的cmake编译选项中filesystem被默认包含,include报错的检查一下编译选项

#include 
#include 
// 推荐重命名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;
}

你可能感兴趣的:(C++,opencv,缓存,计算机视觉,c++)