基于颜色方法的车辆定位识别

close all;
clear all;
clc;
img=imread('che.jpg');
img_1=img(:,:,1);
img_2=img(:,:,2);
img_3=img(:,:,3);
%首先确定车牌的位置,车牌是蓝色分量,利用蓝色分量减去红色分量,可以突出蓝色分量
img3_1=abs(img_3-img_1);
% figure;imshow(img3_1);
%%蓝色分量地方的值明显比其他地方大,设定阈值选中蓝色区域
thresh_b=30;
img_bw=im2bw(img3_1,thresh_b/255);
% figure;imshow(img_bw);
%其他地方可能存在干扰,所以去除干扰地方,只取面积最大的地方
img_l=bwlabel(img_bw);%标记连通区域
img_re=regionprops(img_l,'area');%求连通区域的面积
img_area=[img_re.Area];%转为矩阵
area_max=max(img_area);%取面积最大值
img_p=bwareaopen(img_bw,area_max);%将面积较小的地方删除
% figure;imshow(img_p);
%%%求车牌的坐标
[m,n]=size(img_p);
sum_col=sum(img_p,1);%对列求和
sum_row=sum(img_p,2);%对行求和
%找到该连通区域的左边的坐标
for i=1:1:n
    if(sum_col(1,i)~=0)
        col_left=i;
        break;
    end
end
%找到该连通区域的右边的坐标
for i=n:-1:1
    if(sum_col(1,i)~=0)
        col_right=i;
        break;
    end
end
%找到该连通区域的上边的坐标
for i=1:1:m
    if(sum_row(i,1)~=0)
        row_up=i;
        break;
    end
end
%找到该连通区域的下边的坐标
for i=m:-1:1
    if(sum_row(i,1)~=0)
        row_down=i;
        break;
    end
end
w=abs(col_right-col_left);%求矩形区域的长度
h=abs(row_down-row_up);%求举行区域的高度
% figure;imshow(img);hold on;
% h1=line([col_left col_right],[row_up,row_up],'Color',[1 0 0],'LineWidth',3);
% h2=line([col_left col_right],[row_down,row_down],'Color',[1 0 0],'LineWidth',3);
% h3=line([col_left col_left],[row_up,row_down],'Color',[1 0 0],'LineWidth',3);
% h4=line([col_right col_right],[row_up,row_down],'Color',[1 0 0],'LineWidth',3);
% hold off;

%%确定了车牌区域,在利用车牌和车子的大致关系确定整个车身
% 车牌大小440×140
% 普通轿车长度都在3800mm到4300mm之间、宽度在1600mm到1800mm之间、高度在1400mm到1600mm之间。
%利用车牌确定车的位置
%车牌到1600/440=3.6,1400/140=10;对于左右两边来说车牌在中间,因此暂定将车牌左坐标减去2个车牌长度得到车身左边,右边加两个长度得到右边
%对于上下来说,车牌不在中间,将其按上73的比例分配,即车牌上坐标加上7个坐标宽度得到车身上面左边,车牌下坐标减去3个长度得到下坐标
ser_1=2;%左右
ser_2=7;%上
ser_3=3;%下
c_l=col_left-ser_1*w;c_r=col_right+ser_1*w;
r_u=row_up-ser_2*h;r_d=row_down+ser_3*h;
rect_=[c_l r_u c_r-c_l r_d-r_u];
figure;imshow(img);hold on;
rectangle('Position',rect_,'LineWidth',3,'EdgeColor','r');hold off;








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值