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

前言

这套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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值