📄 matlab.txt
字号:
clc,clear,close all %清空Matlab工作平台所有变量(准备工作)
b=imread('car3.jpg'); %读取图像“车3”的信息
tic %tic toc函数可以获得程序执行时间,此处用于获得整个程序的运行时间。
figure(1),imshow(b); %需要多个窗口同时打开的时候使用figure语句;
%如果窗口不存在,则产生新图形窗口并设置为当前图形窗口,该窗口名为“Figure No.n”,而不关闭其他窗口。
%imshow可用于显示“车3”的图像
[size1,size2,size3]=size(b) %得到“车”的矩阵各维的大小
c=zeros(size1,size2,size3); %生成与“车”矩阵各维大小相同的全0矩阵c
L=b(:,:,1)<80 & b(:,:,2)<80 & b(:,:,3)>100; %suit for 'car2.jpg';'car3.jpg'
% L=b(:,:,1)<160 & b(:,:,2)<160 & b(:,:,3)>190; % suit for 'car1.jpg'
c(L)=255;
L1=~L;
c(L1)=0;
c1=uint8(c); %类型无符号整型(uint8),即图像矩阵中每个数据占用1个字节。存储灰度图像只需要一个数据矩阵。
%数据类型是uint8,[0,255]阵中每个数据占用1个字节。
figure(2);imshow(c1) %打开窗口2,显示图像c1
maxx=0;maxy=0;minx=size2;miny=size1; %给maxx\maxy\minx\miny分别初始化
for i=1:size1
for j=1:size2
if c(i,j,1)==255
if i<miny
miny=i;
end
if i>maxy
maxy=i;
end
if j<minx
minx=j;
end
if j>maxx
maxx=j;
end
end
end
end
minx
miny
maxx
maxy
%c1=uint8(c);
%figure(2);imshow(c1)
c2=imcrop(b,[minx,miny,maxx-minx,maxy-miny]);
figure(3);imshow(c2);
[m1,m2]=max(max(c));
[w1,w2]=max(c(:,m2(:,:,1),:));
angle1=atan(abs(w2(:,:,1)-miny)/(maxx-minx));
angle1=angle1/2*180/pi;
p1=imrotate(c2,-angle1+30);
p2=imrotate(p1,-30);
figure(4);imshow(p2)
%=====
[size1,size2,size3]=size(p2)
cc=zeros(size1,size2,size3);
% L=(b(:,:,1)+10<b(:,:,3)) & (b(:,:,2)+10< b(:,:,3)); %suit for 'car2.jpg';'car3.jpg'
LL=p2(:,:,1)<80 & p2(:,:,2)<80 & p2(:,:,3)>100; %suit for 'car2.jpg';'car3.jpg'
% L=b(:,:,1)<160 & b(:,:,2)<160 & b(:,:,3)>190; % suit for 'car1.jpg'
cc(LL)=255;
LL1=~LL;
cc(LL1)=0;
cc1=uint8(cc);
figure(5);imshow(cc1)
maxx=0;maxy=0;minx=size2;miny=size1;
for i=1:size1
for j=1:size2
if cc(i,j,1)==255
if i<miny
miny=i;
end
if i>maxy
maxy=i;
end
if j<minx
minx=j;
end
if j>maxx
maxx=j;
end
end
end
end
minx
miny
maxx
maxy
cc2=imcrop(p2,[minx+3,miny+10,maxx-minx-6,maxy-miny-20]);
figure(6);imshow(cc2);
figure(7);im2bw(cc2);
toc
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -