matlab按路径对图片进行批量读取的方法整理物体目标检测

做计算机视觉,或多或少需要用到图片批量读取的功能,我在这里分享两种比较经常用到的方法。还有后面会总结路径拼接的方法。

  1. dir方法读取
    这个方法比较不好的地方就是,他会读取到.,…这两个代表根目录的符号,导致目录里的图片数量比正确的数量多两个。
    所以一般在matlab里,我们需要从第三个开始遍历
test_output_folder = 'test_cell_detection_0613_output_cell2_yolov2_crop_900_900_delete';
test_files = dir(test_image_folder);
for k = 3 : length(test_files)
   #图片文件名
    baseFileName = test_files(k).name;
    #连接上文件夹变成路径
    fullFileName = fullfile(test_image_folder, baseFileName);
    I = imread(fullFileName);
    #你的处理代码
end

  1. 用imageDatastore方法

如果一个图像文件集合中的每个图像可以单独放入内存,但整个集合不一定能放入内存,则可以使用 ImageDatastore 对象来管理。您可以使用 imageDatastore 函数创建 ImageDatastore 对象,指定其属性,然后使用对象函数导入和处理数据。

    testImage = fullfile(input_image_folder_name,'*.png');
    number_of_input_images=length(dir(testImage))
    %create test image datastore:
    imds = imageDatastore(testImage);
    for k=1:length(imds_i.Files)
            I = readimage(imds_i,k);
            #你的处理代码
   end

imageDatastore的4个属性 imds =

ImageDatastore with properties:
Files: {
’ …\matlab\toolbox\matlab\demos\street1.jpg’;
’ …\matlab\toolbox\matlab\demos\street2.jpg’;
’ …\matlab\toolbox\matlab\imagesci\peppers.png’
… and 1 more
}
ReadSize: 1
Labels: {}
ReadFcn: @readDatastoreImage

路径方法总结
1.该函数用于将一个文件的完整路径中各部分提取出来。

[folder,output_base_name,] = fileparts(fullFileName);
[path,name,ext] = fileparts(file);

2.该函数是将文件路径拼合起来
2.1 通过fullfile函数

 fullFileName = fullfile(test_image_folder, baseFileName);

2.2 通过字符串连接的方式

imwrite(I,[test_output_folder,'/',output_base_name,'_output','.png']);

2.3 用sprintf的方式
str = sprintf(formatSpec,A1,…,An)使用formatSpec数组A1,…,An中的数据格式。在str中返回生成的文本。sprintf函数按A1,…,An按列顺序设置值的格式。

groundtruthFileName1 = sprintf('%s/%s.png',metalfile,name); 
mkdir(groundtruthFileName1);
imwrite(b,groundtruthFileName1);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值