opencv--把cv::Mat数据转为二进制数据的保存和读取

保存

#include <opencv2/opencv.hpp>
#include <iostream>
#include <fstream>void saveMatToBinary(const cv::Mat& mat, const std::string& filename) {std::ofstream ofs(filename, std::ios::binary);if (!ofs.is_open()) {std::cerr << "Failed to open file for writing: " << filename << std::endl;return;}// Write the matrix type and sizeint type = mat.type();int rows = mat.rows;int cols = mat.cols;ofs.write((char*)&type, sizeof(type));ofs.write((char*)&rows, sizeof(rows));ofs.write((char*)&cols, sizeof(cols));// Write the matrix dataofs.write((char*)mat.data, mat.total() * mat.elemSize());ofs.close();
}int main() {cv::Mat image = cv::imread("path_to_your_image.jpg");if (image.empty()) {std::cerr << "Failed to load image" << std::endl;return -1;}saveMatToBinary(image, "output.bin");return 0;
}

读取

#include <opencv2/opencv.hpp>
#include <iostream>
#include <fstream>cv::Mat loadMatFromBinary(const std::string& filename) {std::ifstream ifs(filename, std::ios::binary);if (!ifs.is_open()) {std::cerr << "Failed to open file for reading: " << filename << std::endl;return cv::Mat();}// Read the matrix type and sizeint type, rows, cols;ifs.read((char*)&type, sizeof(type));ifs.read((char*)&rows, sizeof(rows));ifs.read((char*)&cols, sizeof(cols));// Create the matrixcv::Mat mat(rows, cols, type);// Read the matrix dataifs.read((char*)mat.data, mat.total() * mat.elemSize());ifs.close();return mat;
}int main() {cv::Mat loadedImage = loadMatFromBinary("output.bin");if (loadedImage.empty()) {std::cerr << "Failed to load image from binary file" << std::endl;return -1;}cv::imshow("Loaded Image", loadedImage);cv::waitKey(0);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/43932.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python | Leetcode Python题解之第225题用队列实现栈

题目&#xff1a; 题解&#xff1a; class MyStack:def __init__(self):"""Initialize your data structure here."""self.queue collections.deque()def push(self, x: int) -> None:"""Push element x onto stack."&…

LabVIEW机器视觉技术在产品质量检测中有哪些应用实例

LabVIEW的机器视觉技术在产品质量检测中有广泛的应用&#xff0c;通过图像采集、处理和分析&#xff0c;实现对产品缺陷的自动检测、尺寸测量和定位校准&#xff0c;提高生产效率和产品质量。 1. 电子元器件质量检测 在电子制造业中&#xff0c;电子元器件的质量检测是确保产品…

【基于深度学习方法的激光雷达点云配准系列之GeoTransformer】——粗配准

【GeoTransformer系列】——粗配准 1.coarse_matching1.1 概要1.2 功能1.3 超参1.4 input1.5 output2 coarse_target2.1 概要2.2 功能2.3 input2.4 output在模型部分有了初步了解之后, 接下来我们对后续的粗配准、精配准等部分依次进行解读. 本篇主要来看粗配准部分, 代码是在G…

websocket推送消息,模拟推送

上一篇文章&#xff1a;什么是webSocket&#xff1f;以及它的一些相关理论知识 背景&#xff1a; MQTT 的发布/订阅模式与 WebSocket 的双向通信特性相结合。 通过将 MQTT 与 WebSocket 结合使用&#xff0c;可以在 Web 应用中实现高效、实时的消息传输&#xff0c;特别适用于…

算法练习第29天|1005.K次取反后最大化的数组和

1005. K 次取反后最大化的数组和 - 力扣&#xff08;LeetCode&#xff09; 1.题目描述 给你一个整数数组 nums 和一个整数 k &#xff0c;按以下方法修改该数组&#xff1a; 选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。 重复这个过程恰好 k 次。可以多次选择同一个下…

24/7/10总结

flex布局 父项常见属性 justify-content:设置主轴上的子元素排列方式 flex-wrap:设置子元素是否换行 align-items:设置侧轴上的子元素的排列方式&#xff08;单行&#xff09; 拉伸要把子盒子里的高度给去掉 如果两个align-items都是center并且主轴是y轴就是这种效果…

Java | Leetcode Java题解之第225题用队列实现栈

题目&#xff1a; 题解&#xff1a; class MyStack {Queue<Integer> queue;/** Initialize your data structure here. */public MyStack() {queue new LinkedList<Integer>();}/** Push element x onto stack. */public void push(int x) {int n queue.size();…

操作系统:信号究竟是什么?如何产生?

OS信号 一、信号的概念二、信号的产生1&#xff09;终端按键产生信号1、 前台进程、后台进程2、验证终端按键是否产生信号 2&#xff09;调用系统函数向进程发信号3&#xff09;硬件异常产生信号1、浮点数溢出&#xff0c;CPU产生信号2 浮点数溢出&#xff0c;产生信号原理3. 空…

Mysql-内置函数

一.什么是函数&#xff1f; 函数是指一段可以直接被另外一段程序调用的程序或代码。 mysql内置了很多的函数,我们只需要调用即可。 二.字符串函数 MySQL中内置了很多字符串函数: 三.根据需求完成以下SQL编写 由于业务需求变更,企业员工的工号,统一为5位数,目前不足5位数的全…

深入浅出Transformer:大语言模型的核心技术

引言 随着自然语言处理&#xff08;NLP&#xff09;领域的不断发展&#xff0c;Transformer模型逐渐成为现代大语言模型的核心技术。无论是BERT、GPT系列&#xff0c;还是最近的T5和Transformer-XL&#xff0c;这些模型的背后都离不开Transformer架构。本文将详细介绍Transfor…

windows驱动开发基础-环境篇

前言 Windows上无论是用户模式下还是内核模式下&#xff0c;有关驱动的开发都有可能影响系统稳定性&#xff0c;所以我们首先要准备一个专用的测试环境&#xff0c;可以使用VM等虚拟机方便环境修复和还原 测试模式 开启测试模式&#xff1a;cmd 命令 bcdedit /set testsign…

量化机器人能否实现无缝交易?

量化机器人通过先进的算法和自动化技术&#xff0c;正在逐步实现无缝交易的目标。这种类型的交易系统设计用于最大限度地减少执行延迟&#xff0c;提高交易效率&#xff0c;并确保交易过程中的高度精确性和一致性&#xff0c;从而在金融市场中提供无缝且高效的交易体验。 无缝…

1.introduce

MkDocs 简介 MkDocs 是一个简单且快速的静态网站生成器&#xff0c;专门用于项目文档。它使用Markdown文件作为内容源&#xff0c;基于Python构建&#xff0c;易于配置和使用。 主要特性 易于安装和使用&#xff1a;通过Python包管理器安装&#xff0c;配置简单。主题支持&…

旷野之间2 - 如何训练医疗保健小型语言模型(AI-SLM)

​​​​ 在本文中,我们将研究如何针对疾病症状训练一个小型医疗保健语言模型。为此,我们将从HuggingFace获取数据集(用于训练我们的模型):https://huggingface.co/datasets/QuyenAnhDE/Diseases_Symptoms QuyenAnhDE/Diseases_Symptoms 数据集来自 Hugging Face。图片来源…

Flink推测机制

1、配置 execution.batch.speculative.enabled&#xff1a;false&#xff0c;推测机制开关&#xff0c;必须在AdaptiveBatchScheduler模式下使用 execution.batch.speculative.max-concurrent-executions&#xff1a;2&#xff0c;同时最多几次执行 execution.batch.speculativ…

6.MkDocs附录

安装插件 在 MkDocs 中&#xff0c;插件通常是通过 pip​ 工具安装的。你可以使用以下步骤来安装和配置 MkDocs 插件。 1.使用 pip​ 命令安装你需要的插件。例如 pip install pymdown-extensions‍ 2.更新 mkdocs.yml​ 文件。 ‍ 3.使用 mkdocs serve​ 命令本地预览你…

CentOS6禁止锁屏

在电源中设置后还是会锁屏, 原因是有屏幕保护程序 电源管理都 “从不” 一些AI的回答 在CentOS 6系统中&#xff0c;如果你想要禁用锁屏功能&#xff0c;可以编辑/etc/kbd/config文件。这个文件通常包含了键盘相关的设置&#xff0c;包括密码策略和屏幕锁定选项。 首先打开终…

支持向量机 (support vector machine,SVM)

支持向量机 &#xff08;support vector machine&#xff0c;SVM&#xff09; flyfish 支持向量机是一种用于分类和回归的机器学习模型。在分类任务中&#xff0c;SVM试图找到一个最佳的分隔超平面&#xff0c;使得不同类别的数据点在空间中被尽可能宽的间隔分开。 超平面方…

三级_网络技术_12_路由设计技术基础

1.R1、R2是一个自治系统中采用RIP路由协议的两个相邻路由器&#xff0c;R1的路由表如下图(a)所示&#xff0c;当R1收到R2发送的如下图(b)的(V.D)报文后&#xff0c;R1更新的4个路由表项中距离值从上到下依次为0、3、3、4 那么&#xff0c;①②③④可能的取值依次为()。 0、4、…

在 VitePress 中安装 mermaid 画 UML,并推荐在线 mermaid 编辑网址

介绍 在 VitePress 中如果想要画流程图&#xff0c;饼图&#xff0c;UML类图等一系列图的话&#xff0c;VitePress 原生是不支持的&#xff0c;但是我们可以使用 Mermaid 的vitepress插件&#xff0c;名字是 vitepress-plugin-mermaid。下面介绍如何安装和使用 插件的 Github…