资源简介

车辆检测基础-红色车辆检测 运动目标检测、颜色提取、框选运动目标 https://blog.csdn.net/zxm_jimin/article/details/87940410

资源截图

代码片段和文件信息

%fileName=‘D:\workspace\Matlab workspace\数字图像处理\char2\char2_test\jmucorridor.avi‘;
fileName=‘D:\workspace\Matlab workspace\数字图像处理\char2\char2_test\Sample4.mp4‘;
obj=VideoReader(fileName);
numframes=obj.NumberOfframes;
f=read(obj300);
a=0.01;
for i=10:300
   frame=read(obji);
   b=frame;
   b=(1-a)*b+a*f;
    o=frame-f;
    ogray=f-b;
%     
%         
    %%
img = ogray;  
% get binary image  
gray_img = rgb2gray(img);  
T = graythresh(gray_img);  
bw_img = im2bw(gray_img T);  

bw_img=medfilt2(bw_img[99]);  

% find the largest connected region  
img_reg = regionprops(bw_img  ‘area‘ ‘boundingbox‘);  
areas = [img_reg.Area];  
rects = cat(1  img_reg.BoundingBox);  

% show all the largest connected region  
figure(1)  
imshow(frame);
for i = 1:size(rects 1)  
    if( rects(i3)>20||rects(i4)>20)
    rectangle(‘position‘ rects(i :) ‘EdgeColor‘ ‘r‘);  
    end
end  

%%
% g=o;
% dd1=(g(::1)<=255&g(::1)>=240&g(::2)<=230&g(::2)>=205&g(::3)<=45&g(::3)>=30);
% %由RGB颜色范围抠图 结果为逻辑矩阵(只包含0与1)
% [mn]=size(dd1);
% z=zeros(mn);
% image(cat(3dd1zz))

%%
 x=imread(‘2.jpg‘);%读取彩图
[mnd]=size(x);
y=uint8(x);%转为uint8数据类型,计算图像像素
level=0;%设置阈值


%提取红分量,不满足阈值的变为白色
for i=1:m
    for j=1:n
        if((x(ij1)-x(ij2)>level)&&(x(ij1)-x(ij3)>level))
            y(ij1)=x(ij1);
            y(ij2)=x(ij2);
            y(ij3)=x(ij3);
        else
            b(ij1)=255;
            y(ij2)=255;
            y(ij3)=255;
        end
    end
end
% subplot(222);imshow(y);title(‘提取红分量后‘);%显示提取红分量后的图
sum1=sum(sum(y(::1)));
%%
x1=o;
[mnd]=size(x1);
y1=uint8(x1);%转为uint8数据类型,计算图像像素
% imshow(y1);
level=0;%设置阈值
% figure(5);
% subplot(221);imshow(x1);title(‘原图‘);%显示原图

%提取红分量,不满足阈值的变为白色
for i=1:m
    for j=1:n
        if((x1(ij1)-x1(ij2)>level)&&(x1(ij1)-x1(ij3)>level))
            y1(ij1)=x1(ij1);
            y1(ij2)=x1(ij2);
            y1(ij3)=x1(ij3);
        else b(ij1)=255;
            y1(ij2)=255;
            y1(ij3)=255;
        end
    end
end

%subplot(222);imshow(y1);title(‘提取红分量后‘);%显示提取红分量后的图
sum11=sum(sum(y1(::1)));
flag=0;
if(sum11>0.5*sum1)
    flag=1;
end
figure(3);
if(flag==1)
    imshow(o);
    for i = 1:size(rects 1)  
    if( rects(i3)>30||rects(i4)>30)
    rectangle(‘position‘ rects(i :) ‘EdgeColor‘ ‘r‘);  
    end
end  
end
end

subplot(221)imshow(f);
subplot(222)imshow(b);
subplot(223)imshow(o);

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-01-11 14:47  红色车辆检测\
     文件     1599382  2019-01-11 14:04  红色车辆检测\111.zip
     文件        3747  2019-01-11 13:41  红色车辆检测\2.jpg
     文件     1608919  2019-01-09 22:46  红色车辆检测\Sample4.mp4
     文件        2677  2019-01-11 14:03  红色车辆检测\sy1_1.m

评论

共有 条评论