Matlab отображает двоичные изображения в виде видео
Я использую этот код в качестве отправной точки для определения цвета кожи руки в видео. в качестве первого шага мне удалось сделать это и отобразить результат с помощью imshow(сегмента); функция в Matlab.
Вот код (найден в Интернете), я не совсем понимаю:
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
и вот результат: сегментированная кожа
у меня проблема в том, что я не могу понять, как отображать двоичные изображения в виде видео, используя либо vision.VideoPlayer, либо vision.VideoDeployer, поэтому я могу отображать результат видео, обнаруженного скином, рядом с оригиналом, как в этом пример:
1 ответ
В приведенном вами примере есть два vision.VideoPlayer
объекты: один для отображения исходного видео, а другой для отображения двоичных изображений. Вы просто кормите двоичные изображения в step
метод vision.VideoPlayer
объект.