-
如何使用matlab批量导入图片
2020-05-01 12:08:35如何使用matlab批量导入图片思路程序实现程序中用到的函数dir()函数strcat函数isempty函数save函数eval函数 思路 先对指定文件夹进行扫描,将.jpg等后缀的图片文件信息保存,再依次将每个图片数据导入,最后将每一个...思路
先对指定文件夹进行扫描,将.jpg等后缀的图片文件信息保存,再依次将每个图片数据导入,最后将每一个数据按照变量的形式保存到指定.mat文件
程序实现
下边给出matlab代码:
function import_imageDatas(image_path) image_list=dir(fullfile(image_path,'*.jpg'));%列出path路径下所有后缀为.jpg的文件 image_num=length(image_list);%获取图片数量 if image_num==0 fprintf('未找到任何图像\n'); else fprintf('已找到%d张图像\n',image_num); for i=1:image_num image_name=image_list(i).name;%获取每一张图片名称 %用eval函数可以实现将每一张图片以变量形式保存 val=strcat('Image',num2str(i)); eval([val,'=imread(fullfile(image_path,image_name));']);%导入每一张图片,注意,这里导入的是三通道彩色图像 if i==1 save('ImageDatas.mat',val);%将图片数据以.mat文件保存下来 else save('ImageDatas.mat',val,'-append');%将图片数据以.mat文件保存下来 end end end end
程序中用到的函数
dir函数
matlab控制台中输入
help('dir')
,获取帮助信息:
需要说明的是,dir函数中的自变量为 ‘*.jpg’ 时,意思是列出所有后缀为 .jpg 的文件。
fullfile函数
控制台中输入
help('fullfile')
,得到以下信息:
该函数的目的是将路径与文件名连接。isempty函数
在控制台中输入
help('isempty')
得到以下信息:
save函数
在控制台中输入
help('save')
,得到以下信息:
值得说明的是,本程序中使用了‘-append’参数,这是为了在保存某个变量的时候不覆盖之前的变量,当使用‘-append’参数时必须保证保存的目标文件存在且不为空,否则程序会报错。eval函数
在控制台中键入
help('eval')
得到以下信息:
帮助信息里有些抽象,这里解释一下:
其实eval('a=1')
和a=1
等价,这个函数的作用就是输入固定语句,那么问题来了,为什么我们不直接输入语句而是使用eval函数呢,在我们的程序中,就使用了eval函数:%用eval函数可以实现将每一张图片以变量形式保存 val=strcat('Image',num2str(i)); eval([val,'=imread(strcat(image_path,image_name));']);
在我们这个例子中,eval函数可以实现将每一组图片数据单独保存在某个变量中。
程序运行结果
在控制台输入
import_imageDatas('你的文件夹名称')
运行我们的程序
然后运行load('ImageDatas.mat')
或双击ImageDatas.mat文件,即可加载导入好的图像数据,如下图:
执行imshow(Image1)
即可显示图片,如下图:
使用资源说明:
数据集来源:
-
matlab如何用代码导入文件_20+行Matlab代码实现文件扫描
2021-02-01 14:05:26最近刚好看到一篇回答,用阈值...我们需要:Matlab软件,手机拍的文件图片2019.2.22修改:根据评论区建议,删除循环,将代码全部矩阵化首先读入图片filename='TestPic.jpg';%图片名称,默认与代码在同一文件夹下 img...最近刚好看到一篇回答,用阈值二值化处理图片水印,受到启发写此代码。阈值二值化适合处理只有黑白两色的图片,考虑到文件盖章,这里作者使用像素颜色替换及灰度值处理图片,进一步提高处理精度和能力。
我们需要:Matlab软件,手机拍的文件图片
2019.2.22修改:根据评论区建议,删除循环,将代码全部矩阵化
首先读入图片
filename='TestPic.jpg';%图片名称,默认与代码在同一文件夹下 img=imread(filename);%读入图片
获取图片RGB值
R=img(:,:,1); G=img(:,:,2); B=img(:,:,3);
筛选图片红色
red=(R>=100).*(R<=255).*(G<110).*(B<110);%判断是否为红色并得到红色区域布尔矩阵 %这里的.*为矩阵元素各自相乘,直接使用*为矩阵乘法 %这里偷了个懒,乘法在这里的作用是矩阵相与 %修改红色区域颜色 R(red==1)=255; G(red==1)=70; B(red==1)=70;
这里,RGB数值不固定,可以根据具体图片重新调整。这里作者事先在PS里查看了原图红色区域RGB数值。如果你不会PS,那……总有别的办法搞到RGB吧……实在不行咱一点点调嘛。
在PS中查看像素RGB值 筛选图片白色
将所有像素的灰度值计算出来。这里,灰度是用来判断“白”和“黑”的工具,当灰度大于某一值,我们认为其应该为白色,将该像素完全修改为白色。其余颜色不予改动。
gray=R.*0.299+G.*0.587+B.*0.114;%灰度值计算,得到灰度值矩阵 white=(gray>120)-red;%将灰度中的红色区域剔除,得到白色矩阵 %将白色区域完全变白 R(white==1)=255; G(white==1)=255; B(white==1)=255;
ps:这样做的好处之一是,只让白的地方更白,其他比较复杂的区域未作改变,图片不至于偏离事实。
颜色覆盖
这里我们将之前转换好的RGB图层全部赋值给res变量,res变量即最终结果。
res(:,:,1)=R(:,:); res(:,:,2)=G(:,:); res(:,:,3)=B(:,:);
图片保存
imwrite(res,'stripes2.png');%保存图片
至此,这20行代码已经能自动将你手机拍的图片转换为“扫描文件”了
需要注意的是,拍摄图片的时候最好在文件正上方,拍完有条件地话可以裁剪一下,这些手机自带的软件都可以搞定。
全部完整代码如下:
clc; clear all; filename='TestPic.jpg';%图片名称,默认与代码在同一文件夹下 img=imread(filename);%读入图片 %获取RGB图层 R=img(:,:,1); G=img(:,:,2); B=img(:,:,3); red=(R>=100).*(R<=255).*(G<110).*(B<110);%判断是否为红色并得到红色区域布尔矩阵 %这里的.*为矩阵元素各自相乘,直接使用*为矩阵乘法 %这里偷了个懒,乘法在这里的作用是矩阵相与 %修改红色区域颜色 R(red==1)=255; G(red==1)=70; B(red==1)=70; gray=R.*0.299+G.*0.587+B.*0.114;%灰度值计算,得到灰度值矩阵 white=(gray>120)-red;%将灰度中的红色区域剔除,得到白色矩阵 %将白色区域完全变白 R(white==1)=255; G(white==1)=255; B(white==1)=255; disp('转换结束'); res(:,:,1)=R(:,:); res(:,:,2)=G(:,:); res(:,:,3)=B(:,:); imwrite(res,'stripes2.png');%保存图片 disp('图片已保存');
原图是我在网上随便找的一张,作者使用的软件是Matlab R2016a
文件处理效果如下:
-
matlab如何导入大量的图片_如何利用matlab批量存储图片-百度经验
2020-12-22 01:23:14首先,点击"New"(1-1),然后点击“Script”(1-2),将(1-3)中的代码粘贴到编辑器中,点击(1-4)的“save”后,选择(1-5)的存储地址,输入存储的文件名“baidujingyan”(1-6),点击保存(1-7)。然后可以看到“保存”(1-8...首先,点击"New"(1-1),然后点击“Script”(1-2),将(1-3)中的代码粘贴到编辑器中,点击(1-4)的“save”后,选择(1-5)的存储地址,输入存储的文件名“baidujingyan”(1-6),点击保存(1-7)。然后可以看到“保存”(1-8)按钮变成了灰色。
代码如下:
clear;clc;
figure %新建一张图
axis([0 5 0 2])%定义x轴(从0到5)和y轴的范围(从0到2)
for i=1:4
if i==1
text(i,1,'百','fontsize',40,'color','red');%i=1时,写一个‘百’字
end
if i==2
text(i,1,'度','fontsize',40,'color','red');%i=2时,写一个‘度’字
end
if i==3
text(i,1,'经','fontsize',40,'color','red'); %i=3时,写一个‘经’字
end
if i==4
text(i,1,'验','fontsize',40,'color','red');%i=4时,写一个‘验’字
end
picname=[num2str(i) '.fig'];%保存的文件名:如i=1时,picname=1.fig
hold on % 写后面的字时,不把前面的字冲掉
saveas(gcf,picname)
end
-
如何用matlab导入用PIPE做好的petri net的xml格式的仿真图
2017-10-30 13:02:56我用PIPE画好的petri网的仿真图,是xml文件的格式,但是根据网上导入matlab的方法或者直接用matlab打开这样的文件 这样打开的是一串节点的代码而不是我画好的petri网的图片,求解如何正确导入petri网的内容 -
matlab将图片转换成16进制数据_如何用matlab导入16进制数据,并处理?
2020-12-20 01:09:21假设你说的是文本类型的16进制,按数表排列,并且第一列是10进制的时间,代码如下:function [t,data] = readAscHex(file)% 输入:% file — 数据文件,asc编码% 输出:% t — 时间% data - uint8数据% 编写 : ...假设你说的是文本类型的16进制,按数表排列,并且第一列是10进制的时间,代码如下:
function [t,data] = readAscHex(file)
% 输入:
% file — 数据文件,asc编码
% 输出:
% t — 时间
% data - uint8数据
% 编写 : SY
fid = fopen(file);% 打开文件
cellData = textscan(fid,'%f32 %s','headerlines',1,'delimiter','\n');% 读取数据
t = single(cellData{1}); % 第一列是时标
hexData=cellData{2};
fclose(fid); % 关闭文件
idxNAN = find(isnan(t));
t(idxNAN ) =[];
hexData(idxNAN ) = [];
clear('cellData');
hexData = cell2mat(hexData);
hexDataPos = regexp(hexData(2,:),'[0-9,A-F,a-f]'); % 根据第二行学习所有16进制字符位置,当心如果数据中存在不规则行将出错。
hexData = hexData (:,hexDataPos);
nRows = size(hexData,1);
nCols = size(hexData,2)/2;
data = zeros(nRows,nCols,'uint8'); % 预分配输出数据空间,uint8类型
for iCol = 1:nCols
data(:,iCol) = uint8(hex2dec(hexData(:,(2*iCol-1):(2*iCol)))); % 字符型16进制转换成10进制无符号整型
end
-
matlab如何导入大量的图片_本期介绍:如何在论文中插入高清的图片
2020-12-22 01:22:37加工学术论文时,尤其是理工类论文,很多配图是Matlab绘制的,论文出版时对图片的要求是比较高的,一般情况下会要求600像素以上的分辨率,如果图片分辨率低且丢失了图的代码文件就麻烦了,较复杂曲线图比较难重绘,... -
Matlab--用代码让图片更好看
2020-08-03 09:29:20有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学... -
MATLAB导入工具箱
2019-11-20 09:43:34有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学... -
MATLAB 自动数独求解器(导入图片自动求解)
2020-10-15 20:48:31做了一个导入图片自动求解数独的软件,不过由于目前是通过最小二乘法匹配数字的,所以导入图片中的数字最好不要是手写的。。,图片大概就像这样: 使用效果: 完整代码: function sudokuApp global SDKFig ... -
原创Matlab简易画板包含导入转换图片以及GIF动画-sketchpad.zip
2019-08-12 20:39:19非常感谢这个论坛的各位分享代码的各位朋友以及各位大神的指导,使我顺利完成了我们的小组作业,在此分享给大家我们所做的Matlab简易画板,该画板包含了导入,转换图片以及GIF动画各种代码,也希望能够给需要的朋友... -
matlab 图片的批量处理
2017-12-11 17:37:08通常matlab读取图片并显示的时候,是一张张导入的,而对某一目录下的批量图片的读取介绍很少,本文主要是针对此类情况,提出的一种图片批量处理的手段,通过案例助于更快上手解决问题 代码未加注释,不理解的可以... -
Matlab中如何查找代码中出现的一个词的所有位置,或者替换一个词的所有位置
2020-08-02 10:51:50有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学... -
matlab gui背景图片掩盖axes的解决方法
2020-04-26 16:19:06Matlab gui界面为了设计的更加美观,常常需要导入背景图片,导入背景图片的代码很容易获取。以下是从百度经验上获取的一段导入背景图片的代码: ha=axes('units','normalized','pos',[0 0 1 1]); uistack(ha,'down... -
请问matlab如何导入人脸库文件?
2019-03-19 22:51:13我正在做PCA人脸识别的程序,程序大致已编好,但是需要关联的人脸库文件 代码如下:![图片说明]...采用的是orl人脸库,已经下载到,但是根据代码导入成mat文件(如第三行代码),需要各位大神支个招。 -
matlab毕业论文(部分代码)
2020-07-17 13:22:45matlab毕业论文代码各种方法寻找最强态斜率法功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右... -
怎样将excel格式的肌电信号导入matlab gui绘制时域波形
2018-05-23 06:56:11本人大一医电本科,刚接触matlab,最近学习一个项目,要先用gui绘制信号的时域波形,但是信号是用excel格式的,采样频率为1000HZ的肌电信号,现在能将excel导入,但是绘制不了曲线。我按照网上搜集的音频绘制时域... -
基于FastICA的声源分离实例(matlab代码)
2020-10-08 17:00:29有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学... -
怎样在matlab工作空间中导入txt文件里的复数矩阵?
2019-04-08 22:37:39如图这样的txt文档,我该如何导入到MATLAB的工作区,形成数组,然后对这些数进行运算。 如下是我找到的一段代码 ``` clc; clear; fin=fopen('222.txt','r'); result={}; while feof(fin)==0 str=fgetl... -
matlab 图片RGB颜色提取
2019-10-12 22:32:47写了一个程序能实现导入图片识别颜色 支持屏幕截图和从电脑倒入图片 鼠标移动到想要取色的地方点击可以获取颜色 可以将颜色暂时保存在右边 目前导出颜色数据是从命令行窗口输出 完整代码 function ... -
matlab带上底圆台代码实现
2021-01-30 20:40:41有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学... -
PCA主成分分析的数学推导及基于PCA的人脸识别训练函数代码实现(Matlab)
2020-10-28 20:17:26目录概述PCA数学推导基于PCA的人脸识别训练函数实现(Matlab)参考引用新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个... -
Matlab导出高DPI图片
2019-07-12 20:12:56Matlab导出高DPI图片新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个... -
MatLab GUI Load .mat File 导入mat文件
2017-12-15 09:04:00在MatLab中,我们用GUI时,有时候需要导入mat格式的图片,但是在GUI中调用load和在命令行里调用load不一样,在命令行里调用load('im.mat'),加载进去是uint8的矩阵,但是我们在GUI中写代码加进去,默认得到的是一个... -
熵值法原理介绍及matlab实现代码
2019-12-14 15:44:49有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学... -
三阶魔方自动求解及动态可视化matlab代码
2021-01-23 16:44:57三阶魔方自动求解及动态可视化matlab代码欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格... -
【最全的】直方图平移可逆信息隐藏原理及代码(matlab实现)
2020-03-23 10:27:49【最全的】直方图平移信息隐藏原理及代码(matlab实现)可逆信息隐藏直方图平移功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个... -
求教matlab的A*算法源代码!!!
2018-08-09 11:29:27欢迎使用Markdown编辑器写博客 本Markdown编辑器使用...图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写博客 导入导出Markdown文件 丰富的快捷键 快捷键 加粗 Ctrl + B 斜体 Ctrl + I... -
MATLAB代码实现---遥感图像预处理系统
2021-01-11 14:26:01MATLAB代码实现---遥感图像预处理系统系统介绍代码实现几何校正新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格...