我必须编写一个应用程序,它正在跟踪视频中的所选对象。 接下来我必须打开第二个视频,选择我想要跟踪的元素。 我想比较这两个对象,如果事实证明这些对象是相同的,我的程序会跟踪这个对象,如果不是,程序会显示正确的消息。
有一个问题; 我如何比较这两个对象?
这是程序代码,我必须添加的是'如果'声明,其中的对象被识别。
我从本教程中获取的整个方法: http://www.mathworks.com/help/vision/examples/face-detection-and-tracking-using-the-klt-algorithm.html
clear;
PrzestRobocza1 = vision.VideoFileReader('2.avi');
Odtwarzacz1 = vision.VideoPlayer('Position', [125, 125, 700, 540]);
PierwszaKlatka1= step(PrzestRobocza1);
figure;
imshow(PierwszaKlatka1);
title('Zaznacz obszar na ktorym znajduje sie sledzony obiekt');
ObszarObiektu1= round(getPosition(imrect));
imwrite(ObszarObiektu1, 'abcdcd.jpg');
PunktyChar1 = detectMinEigenFeatures(rgb2gray(PierwszaKlatka1), 'ROI', ObszarObiektu1);
PokazPunkty1 = insertMarker(PierwszaKlatka1, PunktyChar1.Location, 'o', 'Color', 'green');
figure;
imshow(PokazPunkty1);
title('Punkty charakterystyczne na obszarze');
Sledzenie1 = vision.PointTracker('MaxBidirectionalError', 1);
initialize(Sledzenie1, PunktyChar1.Location, PierwszaKlatka1);
while ~isDone(PrzestRobocza1)
Ramka1 = step(PrzestRobocza1);
[PunktyChar1, validity] = step(Sledzenie1, Ramka1);
out = insertMarker(Ramka1, PunktyChar1(validity, :), 'o');
step(Odtwarzacz1, out);
end
release(Odtwarzacz1);
release(PrzestRobocza1);
PrzestRobocza2 = vision.VideoFileReader('3.avi');
Odtwarzacz2 = vision.VideoPlayer('Position', [125, 125, 700, 540]);
PierwszaKlatka2 = step(PrzestRobocza2);
figure;
imshow(PierwszaKlatka2);
title('Zaznacz obszar na ktorym znajduje sie sledzony obiekt');
ObszarObiektu2= round(getPosition(imrect));
imwrite(ObszarObiektu2, 'zdj1.jpg');
%pobieranie współrzędnych śledzonego obiektu
PunktyChar2 = detectMinEigenFeatures(rgb2gray(PierwszaKlatka2), 'ROI', ObszarObiektu2);
PokazPunkty2 = insertMarker(PierwszaKlatka2, PunktyChar2.Location, '+', 'Color', 'red');
figure;
imshow(PokazPunkty2);
title('Punkty charakterystyczne na obszarze');
if %here is the problematic statement
Sledzenie2 = vision.PointTracker('MaxBidirectionalError', 1);
initialize(Sledzenie2, PunktyChar2.Location, PierwszaKlatka1);
while ~isDone(PrzestRobocza2)
Ramka1 = step(PrzestRobocza2);
[PunktyChar2, validity] = step(Sledzenie2, Ramka2);
out = insertMarker(Ramka2, PunktyChar2(validity, :), 'o');
step(Odtwarzacz2, out);
end
release(Odtwarzacz2);
release(PrzestRobocza2);
else
disp('brak dopasowania!');
end