[Rastreamento interativo de vídeo] Extraia e rastreie o alvo no vídeo por meio do matlab e faça comentários rápidos. Clique interativo para visualizar informações através do FLash player

1. Versão do software

MATLAB2010b

2. Conhecimento teórico deste algoritmo

O fluxo do algoritmo é o seguinte:

Leia o vídeo avi: get_AVI .m

Obter vídeo em tons de cinza: vedio_op .m

Acompanhamento de Atletas : func_man_catch.m

Calcular coordenadas: func_get_position .m

Nota: Quando você escreve um artigo, a teoria que você precisa é manter vários aspectos do diagrama de blocos: a aplicação de imagens em tons de cinza; diferença; binário; processamento de gráficos conectados e outros conhecimentos.

3. Parte do código principal

clc;%清除指令窗口的现实
clear;%清除内存
close all;%关闭所有图像
warning off;%关闭警告
tic;%开始计算运行时间

%进行视频读取(这里视频读取为15帧/S,为了计算方便,只运行27帧)
%运行过程会导致仿真异常缓慢
%选择视频01,那么对于的select也选择1,使其能保持到不同的文件中

select                  = 3;%选视频编码
[Obj,frameNum_Original] = get_AVI('source\03.AVI');%读取视频



%01.AVI选取的值
if select == 1
start          = 36;%读取视频的起始位置
frameNum       = 27;%读取视频的长度
sel_area       = 200;%定义视频中运动员的最小面积用于区分是物体还是运动员
end
%02.AVI选取的值
if select == 2
start          = 1;%读取视频的起始位置
frameNum       = 27;%读取视频的长度
sel_area       = 600;%定义视频中运动员的最小面积用于区分是物体还是运动员
end
%03.AVI选取的值
if select == 3
start          = 1;%读取视频的起始位置
frameNum       = 30;%读取视频的长度
sel_area       = 100;%定义视频中运动员的最小面积用于区分是物体还是运动员
end


pixel          = vedio_op(Obj,start,frameNum);   %获取处理视频的灰度视频
pixel_rgb      = vedio_op_rgb(Obj,start,frameNum);%获取处理视频

[L2,L3,people,Xcenters,Ycenters,d,bw] = func_man_catch(pixel,frameNum,sel_area);%运动员的提取
[pixel2,pixel3] = func_position(L2,L3,pixel_rgb,frameNum); %获得定位后的视频
[X1,X2,Y1,Y2]=func_get_position(frameNum,pixel3);%到处运动员的坐标位置信息





implay(pixel_rgb);%播放被处理的视频
implay(pixel);    %灰度视频
implay(d);        %差分图
implay(bw);       %二值图
implay(L2);       %分割1
implay(L3);       %分割2
implay(pixel2);   %播放处理过程的分割图
implay(pixel3);   %处理最后的分割结果



if select == 1
    
    aviFileName = 'save_source\01\01.avi';  %保存视频的名称
    framesPerSec =15;                       %保存视频的没秒帧数
    aviobj = avifile(aviFileName,'fps',framesPerSec,'COMPRESSION','NONE');%定义保存视频
    for i=1:frameNum                            
    aviobj = addframe(aviobj, pixel_rgb(:,:,:,i));%开始写入保存文件
    end
    aviobj = close(aviobj);%保存完毕后关闭
    
    aviFileName = 'save_source\01\01_white.avi';  %保存视频的名称 
    framesPerSec =15;                             %保存视频的没秒帧数 
    aviobj = avifile(aviFileName,'fps',framesPerSec,'COMPRESSION','NONE');%定义保存视频
    for i=1:frameNum
    aviobj = addframe(aviobj, pixel2(:,:,:,i));%开始写入保存文件
    end
    aviobj = close(aviobj);%保存完毕后关闭
    
end


if select == 2
    
    aviFileName = 'save_source\02\02.avi';  %保存视频的名称 
    framesPerSec =15;                       %保存视频的没秒帧数
    aviobj = avifile(aviFileName,'fps',framesPerSec,'COMPRESSION','NONE');%定义保存视频
    for i=1:frameNum
    aviobj = addframe(aviobj, pixel_rgb(:,:,:,i));%开始写入保存文件
    end
    aviobj = close(aviobj);%保存完毕后关闭
    
    aviFileName = 'save_source\02\02_white.avi'; %保存视频的名称  
    framesPerSec =15;%保存视频的没秒帧数
    aviobj = avifile(aviFileName,'fps',framesPerSec,'COMPRESSION','NONE');%定义保存视频
    for i=1:frameNum
    aviobj = addframe(aviobj, pixel2(:,:,:,i));%开始写入保存文件
    end
    aviobj = close(aviobj);%保存完毕后关闭
    
end



if select == 3
    
    aviFileName = 'save_source\03\03.avi';%保存视频的名称  
    framesPerSec =15;%保存视频的没秒帧数
    aviobj = avifile(aviFileName,'fps',framesPerSec,'COMPRESSION','NONE');%定义保存视频
    for i=1:frameNum
    aviobj = addframe(aviobj, pixel_rgb(:,:,:,i));%开始写入保存文件
    end
    aviobj = close(aviobj);%保存完毕后关闭
    
    aviFileName = 'save_source\03\03_white.avi';  %保存视频的名称 
    framesPerSec =15;%保存视频的没秒帧数
    aviobj = avifile(aviFileName,'fps',framesPerSec,'COMPRESSION','NONE');%定义保存视频
    for i=1:frameNum
    aviobj = addframe(aviobj, pixel2(:,:,:,i));%开始写入保存文件
    end
    aviobj = close(aviobj);%保存完毕后关闭
    
end


if select == 1
save XY_Position\01\x.mat X1 X2%保存坐标
save XY_Position\01\y.mat Y1 Y2%保存坐标
end
if select == 2
save XY_Position\02\x.mat X1 X2%保存坐标
save XY_Position\02\y.mat Y1 Y2%保存坐标
end
if select == 3
save XY_Position\03\x.mat X1 X2%保存坐标
save XY_Position\03\y.mat Y1 Y2%保存坐标
end

toc%统计代码的运行时间


4. Etapas da operação e conclusão da simulação

    Executando o MATLAB, você pode obter três vídeos:

Este vídeo é o vídeo original.

Este é um vídeo da matriz de segmentação.

Este é o vídeo dividido.

    Executar FLASH:

As funções dos cinco botões de função são:

A primeira: feche a janela dividida;

A segunda: abra a janela dividida;

O terceiro: jogar flash;

Quarto: Pausar a reprodução;

Quinto: Sair do vídeo FLASH;

Três vídeos foram testados separadamente:

5. Referências

Use para testes de vídeo

A10-08

6. Como obter o código fonte completo

Método 1: Entre em contato com o blogueiro via WeChat ou QQ

Método 2: Assine o tutorial do MATLAB/FPGA, obtenha o caso do tutorial e quaisquer 2 códigos-fonte completos gratuitamente

Acho que você gosta

Origin blog.csdn.net/ccsss22/article/details/124207461
Recomendado
Clasificación