当前位置: 首页 > news >正文

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

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

ncnn::Mat to bin

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

std::ofstream file("output_x86.bin", std::ios::binary);

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

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* 类型,以便将其作为字节流写入文件,

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) 表示将所有数据写入文件,

file.write(reinterpret_cast<const char*>(input_mat.data), input_mat.cstep * sizeof(float));
file.close();

cv::Mat to bin

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();
http://www.dtcms.com/a/5842.html

相关文章:

  • 听GPT 讲Rust源代码--src/tools(27)
  • 什么是高并发系统?
  • ChatGPT4.0(中文版)国内无限制免费版(附网址)
  • 15. 三数之和
  • conda移除环境
  • 【译文】IEEE白皮书 6G 太赫兹技术的基本原理 2023版
  • 【第十二课】KMP算法(acwing-831 / c++代码 / 思路 / 视频+博客讲解推荐)
  • SpringMVC系列之技术点定向爆破一
  • 相比于其他流处理技术,Flink的优点在哪?
  • 3D动态路障生成
  • 【Qt-Button】
  • 蓝牙物联网智能安防系统设计方案
  • 工程监测振弦采集仪的信号处理与分析方法研究
  • 基于RocketMQ实现分布式事务
  • mac下jd-gui提示没有找到合适的jdk版本
  • Vue框架引入Axios
  • 微软发布安卓版Copilot,可免费使用GPT-4、DALL-E 3
  • 由于被认为是客户端对错误(例如:畸形的请求语法、无效的请求信息帧或者虚拟的请求路由),服务器无法或不会处理当前请求。
  • 如何批量提取pdf文件名到excel?
  • 【前端框架】NPM概述及使用简介
  • ICLR 2024 高分论文 | Step-Back Prompting 使大语言模型通过抽象进行推理
  • 激活函数:神经网络的生命之花
  • 数据分析-23--糖尿病预测(线性回归模型)(包含数据代码)
  • 基于 OV2640 的以太网 RGMII 图像传输系统设计
  • 常用的 linux 命令
  • 【《设计模式之美》】如何取舍继承与组合
  • Android 12 Token 机制
  • 复分析——第1章——复分析准备知识(E.M. Stein R. Shakarchi)
  • Redis实现日榜|直播间榜单|排行榜|Redis实现日榜01
  • Python可视化之Matplotlib