题目:给出一组图片(图片上框有不同颜色的方框,同一颜色的方框可能有多个,不同颜色的方框代表不同的类别)
例如这样的图片:
要求:
①在一个文件夹里循环读入图片
②输出图片的宽、高、框的类别、框的左下角坐标(X,Y),框右上角坐标(X,Y),标注的难易程度(0:不难)
③将输出的结果保存成xml类型(根节点、子节点、二级节点)的文件中,保存的文件名与读入的图片名相匹配。
实现过程:
①实现循环读文件夹中的图片:
% 图像文件夹路径
file_path = 'F:\标注图\';
%获取该文件夹中所有jpg格式的图像
img_path_list = dir(strcat(file_path,'*.jpg'));
%获取图像总数量
img_num = length(img_path_list);
%有满足条件的图像
if img_num > 0
%逐一读取图像
for j = 1:img_num
% 图像名
image_name = img_path_list(j).name;
rgb = imread(strcat(file_path,image_name));
进行图像相关处理
end
end
②实现图像处理并达到输出要求:
r = rgb(:,:,1); %提取彩色图像的红色分量。
g = rgb(:,:,2); %提取彩色图像的绿色分量。
b = rgb(:,:,3); %提取彩色图像的蓝色分量。
[w,h,s]=size(rgb); %提取图像的高(行)、宽(列),维数(没有用到)
red=r>=175&g<36&b<36; %提取符合图片中红色的像素范围
blue=r<=60&g<135&b>70; %提取符合图片中蓝色的像素范围
green=(20>r)&(g>80)&(g<100)&(b>20)&(b<=35); %提取符合图片中绿色的像素范围
orange=(r>200)&(g<118)&(g>36)&b<50; %提取符合图片中橙色的像素范围
purple=(175>r)&(r>97)&g<35&(b>52)&(b<=67); %提取符合图片中紫色的像素范围
a{1}=red;
a{2}=blue;
a{3}=green; %将颜色存入矩阵
a{4}=orange;
a{5}=purple;
yz=300; %作为bwareaopen函数的参数
for i=1:5
if