tracking object in a video
5 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
darova
2020-4-6
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 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Tracking and Motion Estimation 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!