Track 3 SPECIFIC bubble in videostream full of bubbles [closed]
I want to track 3 bubbles in videos(converted to GIF for uploading) like
and append the x,y in vectors or lists for cv::polylines
.
I can track if there is ONLY bubble in every frame and draw a track line for it with polylines but when I want to append ALL OF THEM in lists so I can select the bubbles I want, stuff goes WRONG.
I cant append the x and y of a bubble in its own vector.
code is simple but I made A CODE for anyone who needed the obvious code:
Mat frame,edgeFrame;
vector<vector<Point>> cnts;
vector<Vec3i> hie;
vector<Point2f> XY;
float r;
// specific vector for each bubble
vector<Point> firstBubble,secondBubble,thirdBubble,fourthBubble,millionthBubble;
while(true){
cap >> frame;
canny(frame, edgeFrame, 50, 150, 3);
findContours(edgeFrame, cnts, hie, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE);
for(int i = 0 ; i < cnts.size() ; i ++){
minEnclosingCircle(cnts[i], XY, r);
circle(frame, XY , r , Scalar(0,0,0), 1 , LINE_AA);
// append the XY of contour to the specific list
//AKA the problem
}
}
to be more clear I want to draw from vectors like track lines:
P.S : one,two,three,four, ... is the name of vector.
this is not the only video that I want to track my bubbles.
bubbles are eggZaklty the same color and shape but the radius is not constant and it can be chaotic
THE BUBBLES CAN MOVE HORIZONTALLY TOO
EDIT: Can I use something "like" optical flow on binary images? what I want is in lk_track in python examples
(sparse) optical flow seem to be a good idea here, indeed.
@berak I cant use that function cuz my frame is binary. and I need center coords.I just dont know how lk_track create a list of lists for
cv::polylines
i don't see, why your image has to be binary (or why this would be an objective), and instead of gfft points you could try to track your center points from findContours ?
@berak my output frame is from canny and minEnclosingCircle is more accurate than moments to get center coords and radius.my problem is how to append the coords to related list
yea, i see. i'd think, too, that your way , using Canny -> findContours -> minEnclosingCircle gives you a decent center point, but before the Canny, you had a grayscale image, no ? why not keep that for the optical flow ?
@berak and then I would have the same problem: how can I add coords of every bubble in specific lists.look at this lk_track . I want to make a list just like
self.tracks
forpolylines
hungarian algorithm
@berak cool. thank you so much