Ich versuche Rechtecke um Blobs in jedem Frame eines Videos zu zeichnen. Methode insertShape funktioniert aber nicht sehr gut. Verfahren Rechteck scheint nicht, etwas zu tun, und ich verstehe nicht, wo das Problem ist, wie es mit einer .avi-Datei funktioniert aber nicht mit .mp4 ...Matlab wird kein Rechteck überlagern
firstRunFlag = true;
threshold = 0.18;
se_erode = strel('square', 3);
se_dilate = strel('square', 30);
v = VideoReader('Traffic.mp4');
figure;
while hasFrame(v)
frame_now = readFrame(v);
if (firstRunFlag)
frame_prev = frame_now;
firstRunFlag = false;
end
frame_diff = frame_now - frame_prev;
frame_diff_grayscale = rgb2gray(frame_diff);
bw = im2bw(frame_diff_grayscale, threshold);
bw = imerode(bw, se_erode);
bw = imdilate(bw, se_dilate);
bw = imfill(bw,'holes');
boxes = regionprops(bw, 'BoundingBox');
imshow(frame_now);
for i=1:length(boxes)
this_box = boxes(i).BoundingBox;
rectangle('Position', [this_box(1), this_box(2), this_box(3), this_box(4)], 'EdgeColor', 'r', 'LineWidth', 2)
end
frame_prev = frame_now;
end
Es scheint auch zu funktionieren ein einzelnes Bild, aber nicht bei der Anzeige von Bild für Bild ...
was ist 'Halten 'für das Rechteck? – Shai
nein, es wird immer noch nicht das Rechteck anzeigen, und zeigt nur das erste Bild – krsnik93
hinzufügen "Drawnnow" nach dem Zeichnen des Rechtecks. – Shai