用matlab在文件夹下读取mask(.png)图片信息和原图(.jpg)图片信息,对mask图片信息进行0和1二值化,再和原图进行点乘操作,提取出相应的前景信息。
Market1501:
clc;clear all
rootdir = 'E:/gyx/Paper/PRID/Test/dataset/markt1501_all/query';
subdir = dir(rootdir);
for i=1:length(subdir)
if(isequal(subdir(i),'.') || isequal(subdir(i),'..') || ~subdir(i).isdir)
continue;
end
subdirpath = fullfile(rootdir,subdir(i).name,'*.jpg');
subdirpath_1 = fullfile(rootdir,subdir(i).name,'*.png');
images = dir(subdirpath); % 所有后缀为.jpg的文件
images_1 = dir(subdirpath_1);
for j=1:length(images)
disp(erase(images(j).name,'.jpg'))
disp(erase(images_1(j).name,'.png'))
if erase(images(j).name,'.jpg') == erase(images_1(j).name,'.png')
ImageName = fullfile(rootdir,images(j).name);
disp(ImageName);
ImageData = imread(ImageName); % 依次读取图像
ImageName_1 = fullfile(rootdir,images_1(j).name);
disp(ImageName_1);
ImageData_1 = imread(ImageName_1) ;
Image_n = ImageData .* (ImageData_1 / 255);
saveddir = 'E:/gyx/Paper/PRID/Test/dataset/ForeGround'; % 图像新保存到的路径
savedname = fullfile(saveddir,images(j).name); % 图像名称不变
disp(savedname);
imwrite(Image_n,savedname); % 保存图像
else
continue;
end
end
end
效果图如下:
===>
cuhk03:
clc
rootdir = 'E:/gyx/Learning/Practice/4/data/cuhk03/labeled/images/'; %全景图
rootdir_1 = 'E:/gyx/Learning/Practice/4/data/cuhk03_seg/cuhk03_labeled_seg/'; %分割mask图
subdir = dir(rootdir);
subdir_1 = dir(rootdir_1);
for i=1:length(subdir)
if(isequal(subdir(i),'.') || isequal(subdir(i),'..') || ~subdir(i).isdir)
continue;
end
subdirpath = fullfile(rootdir,subdir(i).name,'*.jpg');
subdirpath_1 = fullfile(rootdir_1,subdir_1(i).name,'*.png');
images = dir(subdirpath); % 所有后缀为.jpg的文件
images_1 = dir(subdirpath_1);
j = 1;
while j <= length(images)
disp(erase(images(j).name,'.jpg'))
disp(erase(images_1(j).name,'.png'))
ImageName = fullfile(rootdir,images(j).name);
disp(ImageName);
ImageData = imread(ImageName); % 依次读取图像
ImageName_1 = fullfile(rootdir_1,images_1(j).name);
disp(ImageName_1);
ImageData_1 = imread(ImageName_1) ;
Image_n = ImageData .* (ImageData_1 / 255);
saveddir = 'E:/gyx/Learning/Practice/4/data/Test_seg/test/'; % 图像新保存到的路径
savedname = fullfile(saveddir,images_1(j).name); % 图像名称不变
disp(savedname);
imwrite(Image_n,savedname); % 保存图像
j=j+1;
end
end
效果图如下:
===>
Mars:
clc
root_dir = 'E:/gyx/Learning/Practice/4/data/mars/bbox_train/';
subdir_root = dir(root_dir); %路径下的所有文件夹
j=3;
while j<=length(subdir_root)
%disp(j);
Kid = subdir_root(j).name; %所有子文件夹
%disp(Kid) % name: '0001'
rootdir_1 = strcat('E:/gyx/Learning/Practice/4/data/mars/bbox_train/',Kid); %全景文件夹
disp(rootdir_1); %E:/gyx/Learning/Practice/4/data/mars/bbox_train/0001
rootdir_2 = strcat('E:/gyx/Learning/Practice/4/data/mars_seg/bbox_train_seg/', Kid); %mask文件夹
subdir = dir(rootdir_1); %文件夹下所有文件
subdir_1 = dir(rootdir_2); %文件夹下所有文件
i = 3;
while i<=length(subdir)
images = fullfile(rootdir_1,subdir(i).name);
images_1 = fullfile(rootdir_2,subdir_1(i).name); %第i个文件路径
disp(images) %E:\gyx\Learning\Practice\4\data\mars\bbox_train\0001\0001C1T0001F001.jpg
disp(images_1) %E:\gyx\Learning\Practice\4\data\mars_seg\bbox_train_seg\0001\0001C1T0001F001.png
ImageData = imread(images); % 依次读取图像
ImageData_1 = imread(images_1) ;
Image_n = ImageData .* (ImageData_1 / 255);
saveddir = strcat('E:/gyx/Learning/Practice/4/data/mars_seg/new1/', Kid); % 图像新保存到的路径
savedname = fullfile(saveddir,subdir(i).name); % 图像名称不变
disp(savedname);
imwrite(Image_n,savedname); % 保存图像
i = i+1;
end
j = j+1;
end
效果图如下:
===>