Это код обнаружения объекта из видео.
Я хочу обрезать объекты из этого видео кадр за кадром.
videoSource = vision.VideoFileReader('viptraffic.avi','ImageColorSpace','Intensity'...
'VideoOutputDataType','uint8');
detector = vision.ForegroundDetector(...
'NumTrainingFrames', 5, ...
'InitialVariance', 30*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);
step(videoPlayer, out);
end
release(videoPlayer);
release(videoSource);
когда я хочу обрезать bbox из фрейма, он всегда выдает ошибку «недопустимые входные аргументы»
если я напишу эту команду.
frame(bbox(1):bbox(1)+bbox(3), bbox(2):bbox(2)+bbox(4), :);
Вышла ошибка "Индекс превышает размеры матрицы". пожалуйста, помогите мне, как обрезать объекты с изображения
frame
и расположениеbbox
. Вам может пригодиться командаdbstop if error
. 16.11.2014imcrop
. Вы можете добиться того же самого:out = imcrop(frame, bbox);
. 16.11.2014bbox
, а также размер вашего изображения. В наши обязанности не входит отладка вашего кода. 16.11.2014bbox
пусто - для определенного кадра объект не обнаружен. Вы также должны проверить это. 16.11.2014