将ncnn及opencv的mat存储成bin文件的方法

利用fstream,将ncnn及opencv的mat存储成bin文件。

ncnn::Mat to bin

std::ios::binary标志指示文件以二进制模式进行读写,

cpp 复制代码
std::ofstream file("output_x86.bin", std::ios::binary);

将input_mat中的宽、高和通道数分别赋值给width、height和channels,

cpp 复制代码
int width = input_mat.w;
int height = input_mat.h;
int channels = input_mat.c;

使用file.write函数将width、height和channels的值以二进制形式写入文件。reinterpret_cast用于将指针类型进行类型转换,这里将 int* 类型转换为 const char* 类型,以便将其作为字节流写入文件,

cpp 复制代码
file.write(reinterpret_cast<const char*>(&width), sizeof(int));
file.write(reinterpret_cast<const char*>(&height), sizeof(int));
file.write(reinterpret_cast<const char*>(&channels), sizeof(int));

将input_mat.data所指向的数据以二进制形式写入文件。input_mat.data是一个指向input_mat数据的指针,reinterpret_cast将其转换为const char*类型,以便将其作为字节流写入文件。input_mat.cstep * sizeof(float)表示要写入的字节数,input_mat.cstep是input_mat数据中每一行的字节数,乘以 sizeof(float) 表示将所有数据写入文件,

cpp 复制代码
file.write(reinterpret_cast<const char*>(input_mat.data), input_mat.cstep * sizeof(float));
file.close();

cv::Mat to bin

cpp 复制代码
std::ofstream file(filename, std::ios::binary);

int width = mat.cols;
int height = mat.rows;
int channels = mat.channels();
    
file.write(reinterpret_cast<const char*>(&width), sizeof(int));
file.write(reinterpret_cast<const char*>(&height), sizeof(int));
file.write(reinterpret_cast<const char*>(&channels), sizeof(int));  
file.write(reinterpret_cast<const char*>(mat.data), mat.total() * mat.elemSize());
file.close();
相关推荐
Mintopia3 分钟前
PR 才是主战场:AI 时代的 Code Review 新规则
前端·人工智能
努力的小白o(^▽^)o3 分钟前
简历分类问题二
人工智能·分类·数据挖掘
电商API&Tina4 分钟前
主流跨境平台多站点 API 接入流程:淘宝天猫京东API接口
java·大数据·网络·数据库·人工智能·sql·json
Alter12305 分钟前
重仓中国供应链的“新拼姆”,想要做线上版的Costco?
大数据·人工智能
johnny2336 分钟前
AI网文/小说创作平台:AI-Writer、InkOS、MuMuAINovel
人工智能
开源能源管理系统7 分钟前
边缘计算与云端协同:MyEMS 在工业能源实时监测与智能调度中的应用突破
人工智能·开源·能源·边缘计算·能源管理系统
新知图书7 分钟前
LangGraph中的输出范式
人工智能·ai agent·智能体·langgraph
闻道且行之9 分钟前
libhv 安装与使用全流程教程
c++·http·socket·libhv·c/c++
海边夕阳20069 分钟前
Dify 智能体平台深度解析
人工智能·语言模型
轻舟行712 分钟前
langchain从入门到入土 (一)langchain的历程及应用场景
人工智能·python·langchain