【问题标题】:Matlab displaying binary images as videoMatlab将二进制图像显示为视频
【发布时间】:2016-03-04 17:37:37
【问题描述】:

我使用此代码作为起点来检测视频中手的肤色。作为第一步,我已经设法做到这一点,并使用 Matlab 中的 imshow(segment); 函数显示结果。

这是我不完全理解的代码(在网上找到):

function SkinDetection() 

obj = VideoReader('CloseupHandVid.mp4');
nframes = read(obj, inf);
nframes = get(obj, 'NumberOfFrames');
I = read(obj, 1);   

   for k = 1 : nframes
    singleFrame = read(obj, k);
    Skin(:,:,:,k) = singleFrame;
    whos v
    I=double(singleFrame);
    [hue,s,v]=rgb2hsv(I);
    cb =  0.148* I(:,:,1) - 0.291* I(:,:,2) + 0.439 * I(:,:,3) + 128;
    cr =  0.439 * I(:,:,1) - 0.368 * I(:,:,2) -0.071 * I(:,:,3) + 128;
    [w h]=size(I(:,:,1));

    for i=1:w 
      for j=1:h 
       if  140<=cr(i,j) && cr(i,j)<=165 && 140<=cb(i,j) && cb(i,j)<=195 && 0.01<=hue(i,j) && hue(i,j)<=0.1     
            segment(i,j)=1; 
       else       
            segment(i,j)=0;    
      end    
    end
   end 
   imshow(segment);
   end
end

结果如下: segmented skin

我遇到的问题是我无法弄清楚如何使用 vision.VideoPlayervision.VideoDeployer 将二进制图像显示为视频所以我可以在原始视频旁边显示皮肤检测到的视频的结果,如下例所示:

http://uk.mathworks.com/help/vision/examples/motion-based-multiple-object-tracking.html?searchHighlight=multiple%20motion%20detection

【问题讨论】:

    标签: matlab video-processing matlab-cvst segment binary-image


    【解决方案1】:

    在您引用的示例中,有两个vision.VideoPlayer 对象:一个用于显示原始视频,一个用于显示二进制图像。您只需将二进制图像输入vision.VideoPlayer 对象的step 方法即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-11
      相关资源
      最近更新 更多