Crop video using ForegroundDetector?

4 次查看(过去 30 天)
Lydia
Lydia 2015-2-26
Hello,
I'm using ForegroundDetector to detect a moving object from a fixed camera video. I wondered if there is any way to use this to make a new video with everything but the object removed? I'm using this code from here and it can find the object perfectly, but I would like to produce a new video with everything outside the bounding box made black. Anyone have any ideas?
Thank you :)
videoSource = vision.VideoFileReader('moving.avi','ImageColorSpace','Intensity','VideoOutputDataType','uint8');
detector = vision.ForegroundDetector(...
'NumTrainingFrames', 50, ...
'InitialVariance', 30*30); % initial standard deviation of 30
blob = vision.BlobAnalysis(...
'CentroidOutputPort', false, 'AreaOutputPort', false, ...
'BoundingBoxOutputPort', true, ...
'MinimumBlobAreaSource', 'Property', 'MinimumBlobArea', 250);
shapeInserter = vision.ShapeInserter('BorderColor','White');
videoPlayer = vision.VideoPlayer();
while ~isDone(videoSource)
frame = step(videoSource);
fgMask = step(detector, frame);
bbox = step(blob, fgMask);
out = step(shapeInserter, frame, bbox); % draw bounding boxes around object
step(videoPlayer, out); % view results in the video player
end
release(videoPlayer);
release(videoSource);

回答(1 个)

Dima Lisin
Dima Lisin 2015-3-1
You can do that using the foreground mask:
frameWithNoBackground = frame .* fgMask;

类别

Help CenterFile Exchange 中查找有关 Tracking and Motion Estimation 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by