matlab 图像转换保存_一些常用的图像数据操作技能【学习专用】

最近训练数据时,采用实验室的项目数据,需要做一些预处理。

发现一些常用的简单操作总是每次都要百度一下,好记性不如烂笔头,还是记录一下吧,避免以后再百度,以节省时间。。。。。

1、怎样批量获取文件夹中的文件名,并把文件名存在excel中的表格中?

推荐使用BAT批处理法。

比如,获取文件夹中的批量图像名字。

在该文件夹中新建一个txt,然后在里面输入下面一句code,没错,就是一句代码,就能轻松解决问题。

1a1211231d7c09418efa02f8e9e626b3.png

注意,代码中的每个字符之间有空格。

然后把该txt文件格式改为bat文件格式,即直接把txt后缀名修改为bat后缀名。

ff0d9aa642ccd80409eac5c1a81e479e.png

双击该bat文件,直接就在该批量文件夹下面就产生一个保存批量图像名的CSV格式文件。

9bd99cee975b339d29fad652b8d2d7fe.png

该CSV格式的文件打开如下:

fb3790db6f0e10ece60a1e4dbfa7b9af.png

也可以把此bat文件放在其他文件夹里运行,获取当前文件夹下面的所有文件名。

更进一步操作:如何批量获取文件夹中的文件名称,而不要文件后缀名?

在excel中【ctrl+H】打开替换窗口,将后缀名.jpg全部替换为空。

4edddcc53fde06bb98b80a9d286c9d10.png

ecffef53024fc61cdf7cf6bbbfe944b7.png

这样就完成了去掉后缀名的批处理操作。

当然,解决以上问题也可以自己编程,程序实现。

参考:

只要三招,轻松将一个文件夹里所有的文件名提取出来,放到 Excel 表格里​www.360doc.com
09714ffd7c3f1fbb0e7d78ced439519c.png

2、怎样检查excel 中的两列有序的数据是否相同。

写入公式 =if(A1=B1,true,false)此公式是判断A1数据是否与B1一致,,等于返回TRUE,否则返回FALSE。

b7f961a1d62b5c2ce4375e5f20086d4e.png

998106e42aefad428c75e0201fb33615.png

【扩展】

怎样判断excel中的两列无序数据中的内容是否一样?也即:

如何在两个EXCEL表格中查找重复项?

将两列数据放在两个表中,S1和S2中。可以通过函数if( )和函数countif( ),在其中一个表中的空单元格中,输入公式=IF(COUNTIF('S2'!A:A,A1)=1,"重复","不重复")来实现。
这里,在S1工作表,单元格B1输入公式:输入公式=IF(COUNTIF('S2'!A:A,A1)=1,"重复","不重复")。

1188426804096e6ea47ded8d1916986f.png

参考:

https://jingyan.baidu.com/article/f96699bbcf4fac894e3c1b1a.html​jingyan.baidu.com

3、怎样批量更改文件夹中的文件名

【图像jpg格式批量转换为png格式技巧】

(1)、首先在你放图片的文件夹里新建一个记事本文件,取名为“图片批量转化”。要注意的一点就是,里面的图片要统一为一种格式。

(2)、如果想将jpg格式批量转化为png格式,那么就在刚才新建的记事本文档里输入“ren *.jpg *.png”。举一反三可知,如果是将png格式转化为jpg,那么就该这样写“ren *.png *.jpg”。这里要强调的一点就是,“ren”与“png”之后要加有一个空格。记事本文档保存后,将后缀名修改为“bat”。

(3)、最后一步就是双击“bat”后缀的这个文件,它会自动弹出一个窗口,不用管它,等几秒后自动消失,然后就发现所有的图片格式都变成我们想要的png格式了。

参考:

不用任何软件,批量转化图片格式-百度经验​jingyan.baidu.com
6fc569ba418d7b6d4fbd2a9e6a907818.png

【文件名批量命名成数字,并且去除重命名后的括号】

比较麻烦,建议使用程序实现。

参考:

文件名怎样批量命名成数字,去除重命名后的括号-百度经验​jingyan.baidu.com

4、单通道图像转换为三通道的图像

以单通道的tif和三通道的jpg格式的图像为例,一般是将三个通道的数值赋为相同的。

实现核心代码如下:

imagePath = 'G:要处理的tif图像路径';   
savePath='G:要保存处理之后的图像路径tif_jpg';
imageFiles = dir(imagePath); %%读取目录文件下的所有图片文件  
numFiles = length(imageFiles);%%获取图片的数量  
for i=3:numFiles   %%matlab 并行 其实和for一个用法               
    j = i-2;  
    disp(j); %%disp() 函数直接将内容输出在Matlab命令窗口中  
    imageFile = strcat(imagePath,imageFiles(i).name); %%strcat()函数经常出现在批量处理的时候,
%%这个时候我们需要用到for循环,然后这个函数能够让变量和路径产生一些关系,这个时候我们就可以对其进行批量处理。
    A = imread(imageFile); %%读入图片  
    
    A3(:,:,1)=A; %%修改图片尺寸   
    A3(:,:,2)=A;
    A3(:,:,3)=A;
    imwrite(A3,[savePath,num2str(abs(j)),'.jpg']); %%保存图片 。           
end 

5、批处理代码实现

matlab实现:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%批处理
InputPath='G:批处理图像路径';%路径   Path
FileName=dir(strcat(InputPath,'*.tif'));%横向连接字符串
%读入图片格式名字:Name
%%%%截取文件夹中的原图像
FileName_ori=struct2cell(FileName);%将结构体转换为cell,以方便读取cell中的数据
FileName_ori_Name=FileName_ori(1,:)';%读取文件中的文件名字
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
NumFile=length(FileName);
I=cell(1,NumFile);
% path_save=cell(1,NumFile);
for i=1:NumFile
    cd('G:当前图像路径image');% 当前图像路径
tempFileName=FileName(i).name;%读入第一张图片
tempFileName_Name=tempFileName(1:end-4);%获取图片名字,不要后缀 .tif
ImPath=strcat(InputPath,tempFileName_Name);%路径+图像名
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%对图片进行处理
cd('G:批处理切片');%切换到当前程序路径
%%%批处理函数如下:
box_mark=dividem(InputPath,tempFileName_Name);%批量处理的核心操作
end

python实现:

将特定文件夹下的某些批量文件挑选(复制)到到另一个文件夹
#将XML 中的对应的test文件也拿出来
import os
import shutil

obj_path = "D:要处理的图像路径test"
filelist = os.listdir(obj_path)
path1 = "D:总的被挑选的数据集Annotations"
path2 = "D:存储路径obj_xml"#将test中的原批量图在Annotations中对应的xml文件挑选出来

for file in filelist:
    filename_jpg = os.path.splitext(file)[0] + '.xml'  #读取文件名#同理,也可以将对应的图片拿出来
    path_jpg = os.path.join(path1, filename_jpg)
    if(os.path.exists(path_jpg)):
        despath = os.path.join(path2, filename_jpg)
        shutil.copy(path_jpg, despath)

######未完待续,后续再有预处理技巧,再更新补充#######

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值