Crop video using ForegroundDetector?
4 views (last 30 days)
Show older comments
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);
0 Comments
Answers (1)
Dima Lisin
on 1 Mar 2015
You can do that using the foreground mask:
frameWithNoBackground = frame .* fgMask;
0 Comments
See Also
Categories
Find more on Tracking and Motion Estimation in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!