• 大小: 2KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-18
  • 语言: Matlab
  • 标签: 视频跟踪  

资源简介

视频跟踪完整matlab程序 可运行 视频跟踪完整matlab程序

资源截图

代码片段和文件信息

clearclcclose all
%设置分割阈值和电机运行速率
alfa=0.4;v=80;
%设置串口参数
s=serial(‘COM4‘‘BaudRate‘9600‘Parity‘‘none‘‘DataBits‘8‘StopBits‘1‘Terminator‘‘CR‘);
%开启串口
try 
    fopen(s);
catch
    fclose(s);fopen(s);
end
%创建摄像头图像输入目标
set(gcf‘doublebuffer‘‘on‘);
vid = videoinput(‘winvideo‘1);
%vid = videoinput(‘winvideo‘);
%设置图像获取的参数
get(vid);
get(getselectedsource(vid));
set(vid‘TriggerRepeat‘Inf‘ReturnedColorSpace‘‘rgb‘);
%set(vid‘TriggerRepeat‘Inf‘ReturnedColorSpace‘‘rgb‘‘ROIPosition‘[80 60 400 300]);
vid.frameGrabInterval = 5;
vid_src = getselectedsource(vid);
set(vid_src‘Tag‘‘motion detection setup‘);

%获取背景图像
%连续采集三副图像,将图像的均值图作为背景
start(vid);
data = getsnapshot(vid);
data00=im2double(data);%图像数据类型转换
data = getsnapshot(vid);
data00=data00+im2double(data);
data = getsnapshot(vid);
data00=data00+im2double(data);
data00=data00/3;
%灰度变换
fig1=rgb2gray(data00);
%fig1=sqrt(data00(::1).^2+data00(::2).^2+data00(::3).^2);
%增加对比度
minf=min(fig1(:));
maxf=max(fig1(:));
fig1=(fig1-minf)/(maxf-minf);
%获取图像分辨率
[mn]=size(fig1);
%显示背景
figure(1);imshow(fig1);
pause(5);

%采集当前图像
data = getsnapshot(vid);
flushdata(vid); %清空内存
data=im2double(data);
fig2=rgb2gray(data);
%fig2=sqrt(data(::1).^2+data(::2).^2+data(::3).^2);
minf=min(fig2(:));
maxf=max(fig2(:));
fig2=(fig2-minf)/(maxf-minf);
%显示当前图像
figure(2)imshow(fig2);
%当前图像与背景图差分
dfig=abs(fig2-fig1);
%差分后的图像二值化
dfig=im2bw(dfigalfa);
%figure(3)imshow(dfig);
%去噪
newImage = imfill(dfig ‘holes‘);
newImage =~newImage;
newImage = imfill(newImage ‘holes‘);
newImage =~newImage;
%计算图像中目标数
[labelednumobjects] = bwlabel(newImage8);
%测出目标图像参数
graindata = regionprops(labeled‘basic‘)
%获取图像中最大目标
biggrain = find([graindata.Area]==max([graindata.Area]))

%获取图像模板
temp=floor(graindata(biggrain).BoundingBox);
temp1=temp(1)+1;
temp2=temp1+temp(3)-1;
temp3=temp(2)+1;
temp4=temp3+temp(4)-1;
fig0=fig2(temp3:temp4temp1:temp2);
[m0n0]=size(fig0);
figure(3)imshow(fig0);
pause(3);
count=0;d=0;fig1=fig2;

while(count<10)
    %tic
    count=count+1;
    %连续帧差法获取最小匹配搜索区域
    data = getsnapshot(vid);
    flushdata(vid);
    data=im2double(data);
    fig2=rgb2gray(data);
    %fig2=sqrt(data(::1).^2+data(::2).^2+data(::3).^2);
    minf=min(fig2(:));
    maxf=max(fig2(:));
    fig2=(fig2-minf)/(maxf-minf);
     
    %如果d为0表示摄像机向右转图像向右移动
    if(d==0)
        %计算前帧在这一帧的位置i
        aa=fig2-fig1(:1)*ones(1n);
        aa=sum(aa.^2);
        [tempi]=min(aa);
        %帧差获得运动区域
        dfig=abs(fig2(:i:n)-fig1(:1:n+1-i));
        fig=fig2;fig(:i)=0;
        dfig=im2bw(dfigalfa);
        [IJ]=find(dfig);
        %得到新搜索匹配区域
        mm1=floor(max(min(I)-m0/21));
        mm2=floor(min(max(I)+m0/2m));
        nn1=floor(i-1+max(min(J)-n0/21));
        nn2=floor(i-1+min(max(J)+n0/2n+1-i));

        fig(mm1:mm2nn1)=0;
        fig(mm1:mm2nn2)=0;
        fig(mm1nn1:nn2)=0;
        fig(mm2nn1:nn2)

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       4541  2009-02-18 21:29  dongtaigz12_3\dongtaigz12_3.m

     目录          0  2010-04-19 10:24  dongtaigz12_3

----------- ---------  ---------- -----  ----

                 4541                    2


评论

共有 条评论