matlab学习笔记——视频处理

读取视频,当读取第一帧时在这张图片用鼠标手动选择一个区域,然后记录该区域的位置,并统计该区域的RGB平均值,以后读取视频的每一帧图像都在原先已经记录好的位置读取RGB的平均值,然后画出波形图,来统计RGB平均值得变化情况。

clc;  
clear;  
videoObj = VideoReader('wk.mp4');%读视频文件
nframes = get(videoObj, 'NumberOfFrames');%获取视频文件帧个数
currentFrame1=read(videoObj, 1);
imshow(currentFrame1);
  
        k = waitforbuttonpress;              % 等待鼠标按下  
        point1 = get(gca,'CurrentPoint');    % 鼠标按下了  
        finalRect = rbbox;                   %  
        point2 = get(gca,'CurrentPoint');    % 鼠标松开了  
        point1 = point1(1,1:2);              % 提取出两个点(按着鼠标不动,Rect的左上角与右下角点)  
        point2 = point2(1,1:2);  
  
        if point1(1) == point2(1) | point1(2) == point2(2)  


        end %结束终止条件  
        cmin = round(point1(2));
        cmax = round(point2(2));
        rmin = round(point1(1));
        rmax = round(point2(1));
    
        img_rect = currentFrame1(cmin: cmax,rmin : rmax,:);  
        imshow(img_rect);
        
    arrA = zeros(nframes);
    arrB = zeros(nframes);
    arrC = zeros(nframes);
     for k = 1 : nframes
    currentFrame = read(videoObj, k);%读取第i帧
%    
    RGB1 = currentFrame(cmin: cmax,rmin : rmax,: );  
    R=RGB1(:,:,1);%提取R分量
    G=RGB1(:,:,2);%提取G分量
    B=RGB1(:,:,3);%提取B分量
    r=mean(mean(R));%红色均值
    g=mean(mean(G));%绿色均值
    b=mean(mean(B));%蓝色均值
    arrA(k)=r;
    arrB(k)=g;
    arrC(k)=b;
     end
     figure(1);
     subplot(3,1,1);
     plot(arrA);
        axis([0,1000,60,90]);
     title('R均值变化波形图');
     subplot(3,1,2);
     plot(arrB);
       axis([0,1000,60,90]);
     title('G均值变化波形图');
     subplot(3,1,3);
     plot(arrC);
     axis([0,1000,60,90]);
    title('B均值变化波形图');

你可能感兴趣的:(matlab信号处理)