MATLAB读取图片并转换为二进制数据格式

文章目录

  • 前言
  • 一、MATLAB 文件读取方法
    • 1、文本文件读取
    • 2、二进制文件读取
    • 3、 图像文件读取
    • 4、其他文件读取
  • 二、常用的图像处理标准图片链接
  • 三、MATLAB读取图片并转换为二进制数据格式
    • 1、matlab 源码
    • 2、运行结果


前言

本文记录使用 MATLAB 读取图片并转换为二进制数据格式的方法,避免后面再做无用功。


一、MATLAB 文件读取方法

1、文本文件读取

Matlab 可以使用 textread 函数、fgetl 函数和 dlmread 函数来读取文本文件。

  • textread 函数用于读取包含数字和文本值的纯文本文件,例如 .csv 文件。该函数将逐行读取文件,返回矩阵或多个矩阵,并允许您指定分隔符和每种数据类型的格式。
  • fgetl 函数逐行读取纯文本文件,并返回一个字符向量或空字符串。该函数不需要指定分隔符或格式。
  • dlmread 函数读取包含数字的表格,其中数据以指定的分隔符分隔。该函数返回矩阵。

2、二进制文件读取

Matlab 可以使用 fread 函数来读取二进制文件。fread 函数返回一个矩阵,其中每个元素都是二进制文件中的一个值。您可以指定要读取的数据类型、数据格式、读取的起始位置和要读取的数据量。

3、 图像文件读取

Matlab 可以使用 imread 函数来读取图像文件,例如 .jpg 文件。imread 函数可以返回包含像素值的矩阵和一些元数据的结构体。

4、其他文件读取

Matlab 可以使用 load 函数来读取 MATLAB 文件,并返回在文件中存储的所有变量。还可以使用 xlsread 函数来读取 Microsoft Excel 文件。这些函数还可以指定要读取的变量或工作表的名称。

二、常用的图像处理标准图片链接

常用的图像处理标准图片(Lena、cameraman等)获取地址:常用的图像处理标准图片

三、MATLAB读取图片并转换为二进制数据格式

  • 主要流程:为将本地文件转换成二进制数据形式保存成为 txt 格式文件,接着从 txt 文件中读取并显示
  • 验证标准:转换前后显示的图片一致

1、matlab 源码

源码如下:

clear all
close all% 读取图像
imdata = imread('Lena.bmp');% 显示图像
imshow(imdata);% 将图像转换为二进制格式
BinSer = dec2bin(imdata, 8); % 将 BinSer 进行转置,使得每列表示一个像素值的二进制字符串。
BinSer = BinSer';% 根据图像的大小创建一个文件名,文件名的格式为'binaryImg_M_N_K.txt',
% 其中M表示图像的行数,N表示图像的列数,K表示图像的通道数(对于灰度图像,
% 通道数为1)。
FileName = [num2str(size(imdata,1)), '_',num2str(size(imdata,2)),'_',num2str(size(imdata,3)),'.txt'];% 打开文件 FileName,以写入(write)方式
fid = fopen(FileName,'w');% 将 BinSer 中的数据按照字符形式写入到文件中。
fprintf(fid,'%c', BinSer(:));% 关闭文件
fclose(fid);% 创建一个新的图像显示窗口
figure;% 从文件名中读取出图像的行数 M、列数 N 和通道数 K,并将它们存储在变量 mn 中
mn = sscanf(FileName, '%d_%d_%d');
M = mn(1); N = mn(2); K = mn(3);% 以只读(read)方式打开文件 FileName。
fid = fopen(FileName, 'r');% 从文件中读取数据,并将其存储在变量 data 中
data = fscanf(fid, '%c');% 关闭文件
fclose(fid);% 将 data 重新排列成每列 8 个字符的矩阵,表示每个像素值的二进制字符串
data1 = reshape(data, 8, length(data)/8);% 将data1中的二进制字符串转换为对应的十进制表示,并将结果重新排列为
% M×N×K 的三维矩阵,其中 M 为行数,N 为列数,K 为通道数。
data2 = reshape(bin2dec(data1'), M, N, K);% 显示转换后的图像数据
imshow(uint8(data2));

2、运行结果

左图为原图片,右图为转换成二进制文件后再进行显示
在这里插入图片描述
可以看到结果一致,达到了预期的期望。


我的qq:2442391036,欢迎交流!


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

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

相关文章

React入门 - 04(从编写一个简单的 TodoList 说起)

继上一节我们已经对 React组件和 ”JSX语法“有了大概的了解,这一节我们继续在 react-demo这个工程里编写代码。这一节我们来简单实现一个 TodoList来更加了解编写组件的一些细节。 1、在编辑器中打开 react-demo这个工程 2、打开 index.js文件,将组件 …

Spark---RDD(Key-Value类型转换算子)

文章目录 1.RDD Key-Value类型1.1 partitionBy1.2 reduceByKey1.3 groupByKeyreduceByKey和groupByKey的区别分区间和分区内 1.4 aggregateByKey获取相同key的value的平均值 1.5 foldByKey1.6 combineByKey1.7 sortByKey1.8 join1.9 leftOuterJoin1.10 cogroup 1.RDD Key-Value…

C //练习 4-4 在栈操作中添加几个命令,分别用在不弹出元素的情况下打印栈顶元素;复制栈顶元素;交换栈顶两个元素的值。另外增加一个命令用于清空栈。

C程序设计语言 (第二版) 练习 4-4 练习 4-4 在栈操作中添加几个命令,分别用在不弹出元素的情况下打印栈顶元素;复制栈顶元素;交换栈顶两个元素的值。另外增加一个命令用于清空栈。 注意:代码在win32控制台…

鸿蒙南向开发—PWM背光(OpenHarmony技术)

背光驱动模型也是基于HDF框架开发的,整个框架如下: 现在以RK3568为例,来看看PWM背光整个驱动,这里使用的是PWM占空比控制的背光,默认基于hdf的pwm驱动已经OK! 需要注意的是:这里是基于HDF实现的…

Python有优点有哪些 为什么近些年使用的人越来越多

Python是一种广泛使用的高级编程语言,以其简洁、易读和强大的功能而著称。近年来,Python使用人数不断增加。 Python有以下优点: 语法简洁 Python的语法简洁易懂,使得编写代码变得容易和高效。 跨平台 Python支持多种操作系统…

安卓Android Studioy读写NXP ICODE2 15693标签源码

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?spma1z10.5-c-s.w4002-21818769070.11.4391789eCLwm3t&id615391857885 <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xm…

低轨卫星最低轨道高度及发展意义

一、天与空的区别 “空”指的是地球表面到大气层之内的高度范围&#xff0c;通过气球、飞机、飞艇等航空器可达&#xff1b;而大气层之外的空间&#xff0c;才可以称之为“天”&#xff0c;一般需要通过火箭才可到达。 1960年第53届巴塞罗那国际航空联合大会决议规定&#xf…

mysql列题

mysql列题 1.查询学过「张三」老师授课的同学的信息2.查询没有学全所有课程的同学的信息3.查询没学过"张三"老师讲授的任一门课程的学生姓名4.查询两门及其以上不及格课程的同学的学号&#xff0c;姓名及其平均成绩5.检索" 01 "课程分数小于 60&#xff0c…

阿里云 WindowsServer 使用之 配置 SQL Server 允许远程连接

阿里云 WindowsServer 使用之 配置 SQL Server 允许远程连接 第一步&#xff1a;安装 SQL Server 数据库 这是一个很详细的安装教程&#xff0c;可以参考一下 安装SQL Server详细教程 需要注意&#xff1a;安装实例时&#xff0c;建议在‘身份验证模式’直接选择“混合模式”…

编码技巧(二) element-ui table中根据状态控制是否可以勾选

项目中使用element-ui时,表格中的数据有不同的状态,需要对某个状态的数据进行 勾选操作 如图所示: 只有id为12的符合条件可以进行勾选 <el-table-column type="selection" header-align="center" :selectable="selectable" align="c…

Maven 基础总结篇

Maven 基础总结篇 Maven是专门用于管理和构建Java项目的工具&#xff0c;它的主要功能有&#xff1a; 提供了一套标准化的项目结构&#xff1a;用于解决不同IDE&#xff08;例如eclipse与IDEA&#xff09;不同的项目结构的问题 提供了一套标准化的构建流程&#xff08;编译&…

C++经典程序(2)

要读取报文内容&#xff0c;你可以使用C语言的socket编程库来读取报文。下面是一个简单的示例代码&#xff0c;演示了如何使用C语言读取HTTP报文内容&#xff1a; #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h&g…

Redis底层原理

持久化 Redis虽然是个内存数据库,但是Redis支持RDB和AOF两种持久化机制,将数据写往磁盘,可以有效地避免因进程退出造成的数据丢失问题,当下次重启时利用之前持久化的文件即可实现数据恢复。 RDB RDB持久化是把当前进程数据生成快照保存到硬盘的过程。所谓内存快照,就是…

Python修改二值图像某特定颜色

#改变图片像素值164-1&#xff1b;255-2&#xff1b; from PIL import Image import cv2 import os # img cv2.imread("F:/AI/glaucoma_set/gla_img_120_Chall/Annotation-Training400/Disc_Cup_Fovea_Illustration/g0001.jpg") # img cv2.imread("F:/AI/glau…

网络爬虫中的代理IP应用与高效管理策略探析

在网络爬虫技术日益普及的今天&#xff0c;面对目标网站对访问频率、IP地址等的严格限制&#xff0c;如何合理、有效地利用和管理代理IP资源成为了一项至关重要的任务。本文将深入探讨代理IP在爬虫项目中的应用&#xff0c;并提出一套科学高效的管理策略。 一、代理IP在网络爬…

47.解释一下Spring AOP里面的几个名词

解释一下Spring AOP里面的几个名词 切面(Aspect): 在Spring Aop指定就是“切面类” ,切面类会管理着切点、通知。连接点(Join point): 指定就是被增强的业务方法通知(Advice): 就是需要增加到业务方法中的公共代码, 通知有很多种类型分别可以在需要增加的业务方法 不…

分布式I/O应用于智慧停车场的方案介绍

客户案例背景 目前车位检测技术有磁电技术、超声波技术、红外线技术、图像识别车位技术。考虑到例如电磁干扰、信号干扰等的环境因素影响&#xff0c;通常会采用组合使用的方式进行&#xff0c;如采用不同的传感器、应用不同的协议等&#xff0c;以便提高车位检测的准确性和实时…

xilinix 7系列器件生成已加密文件和已经过身份验证的文件

注释 &#xff1a;如需了解更多信息&#xff0c;请参阅《使用加密确保 7 系列 FPGA 比特流的安全》(XAPP1239)。 要生成加密比特流&#xff0c;请在 Vivado IDE 中打开已实现的设计。在主工具栏中&#xff0c;依次选择“Flow” → “Bitstream Settings”&#xff08;流程 >…

Go语言学习笔记(二)

Go语言的学习资源 以下是一些推荐的Go语言学习资源的链接&#xff1a; Go语言教程&#xff1a;https://golang.org/doc/Go by Example&#xff1a;Go by ExampleGolang Tutorials&#xff1a;https://golangtutorials.com/Go语言第一课&#xff08;慕课网&#xff09;&#x…

每周三提前预知:绝地求生27.2版本最早1月10日上线,交易所系统、召唤掩体等新功能上线

嗨&#xff0c;我是闲游盒 27.2新版本预计最早1月10日上线&#xff0c;届时会停机更新约9小时&#xff0c;大家注意合理安排游戏时间! 这次更新带来了很多荣都地图的新玩法&#xff0c;主打的交易所系统即将上线! PUBG官方已经发布了预告 交易所系统 而这次的交易所系统玩法…