Documente Academic
Documente Profesional
Documente Cultură
Volvoreanu Mugur
Anul II Master PCON
Proiect ADPSV
Tema 1
Urmărirea a mai multor autovehicule folosind o
camera video
Pentru a realiza urmărirea a mai multor autovehicule folosind o cameră video trebuie să
se parcurgă următorii pași:
1. Se definesc proprietățile camerei si poziția de montare a camerei;
2. Se încarcă și configurează un detector de autovehicule;
3. Se configurează un tracker multi-object;
4. Se rulează detectorul pentru fiecare cadru;
5. La ultimul pas se actualizează dispozitivul de urmărire cu rezultatele de urmărire într-
un videoclip.
currentStep = 0;
snapshot = [];
snapTimeStamp = 120;
cont = hasFrame(videoReader);
while cont
currentStep = currentStep + 1;
frame = readFrame(videoReader);
Pentru prima linie de cod se updatează frame-urile, iar cu a doua linie de cod se
introduce comanda pentru a citi următorul frame.
În continuare se vor folosi următoarele funcții:
● DetectObjects, aceasta funcție detectează vehiculele intr-o imagine.
Codul functiei:
confirmedTracks = removeNoisyTracks(confirmedTracks,
positionSelector, d.sensor.Intrinsics.ImageSize);
O pistă este considerată zgomotoasă daca caseta predictivă de încadrare este prea mică.
De obicei, acest lucru implică faptul că vehiculul se află la departare.
Codul functiei:
Codul functiei:
if isempty(tracks)
return
end
% Allocate memory.
labels = cell(numel(tracks), 1);
% Retrieve positions of bounding boxes.
bboxes = getTrackPositions(tracks, positionSelector);
for i = 1:numel(tracks)
box = bboxes(i, :);
labels{i} = sprintf('x=%.1f,y=
%.1f',xyVehicle(1),xyVehicle(2));
end
I = insertObjectAnnotation(I, 'rectangle', bboxes, labels,
'Color', 'yellow', ...
'FontSize', 10, 'TextBoxOpacity', .8, 'LineWidth', 2);
End
Următoarea linie de cod, afișează cadrul adnotat, realizarea unui snapshot pasului
curent și închiderea buclei dacă video player-ul este închis de către user.
videoPlayer(frameWithAnnotations);
if currentStep == snapTimeStamp
snapshot = frameWithAnnotations;
end