tracking object in a video
5 views (last 30 days)
Show older comments
Hello,
I have a video of someone who has an orange in his hand and my goal is to track this orange. First of all i have to create a ROI around this orange after the segmentation:
Left: the original video , Right: the video with segmentation to just have the orange.
Left: The ROI around the orange, Right: The virtual camera who follows the orange thanks to the ROI.
First of all i read the video and after, with a while, i must detect the orange in each frame:
videoFileReader = VideoReader('VT.mp4');;
VideoPlayer = vision.VideoPlayer('Position',[100,100,1920,1080]);
%% Detect oranges in each frame
while hasFrame(videoFileReader)
videoFrame = readFrame(videoFileReader);
Bin=videoFrame(:,:,1);
frame_binarise=imbinarize(Bin);
surface=sum(sum(frame_binarise));
[X_barycentre, Y_barycentre] = calcul_Barycentre(frame_binarise);
X=floor(X_barycentre);
Y=floor(Y_barycentre);
se = strel("diamond",1);
contour = frame_binarise - imerode(frame_binarise,se);
imshow(frame_binarise);
end
My baryencenter function:
function [X_barycentre, Y_barycentre] = calcul_Barycentre(img)
[LIG,COL]=size(img);
% Surface
S = sum(sum(img));
% X_barycentre
sumX = 0;
for l=1:1:COL
sumX = sumX+l*sum(img(:,l));
end
X_barycentre = sumX/S;
% Y_barycentre
sumY = 0;
for k=1:1:LIG
sumY = sumY+k*sum(img(k,:));
end
Y_barycentre = sumY/S;
So my probleme is how to make the ROI around the orange ?
2 Comments
darova
on 6 Apr 2020
You have center of the orange and want coordinates of rectangle? Is it correct?
Accepted Answer
darova
on 6 Apr 2020
if these [X_barycentre, Y_barycentre] are coordinates of a center
Use imcrop to crop the image
h = 50; % side of rectangle
I1 = imcrop(videoFrame ,[X_barycentre-h/2 Y_barycenre-h/2 h h])
0 Comments
More Answers (0)
See Also
Categories
Find more on Tracking and Motion Estimation in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!