|
|
|
![]() |
|
|||||||
|
||||||||
|
|
Thread Tools | Rate Thread | Display Modes |
|
#4
|
||||
|
||||
|
Re: pic: Multi Disk Tracking
When I ran it with a kinect, they fps was about 20, so it was indeed the camera.
I used ubuntu 12.10 with the newest version of the opencv libraries. I captured a RGB image, then converted it to HSV, then split the HSV into 3 images, H, S, and V. Then thresholded to eliminate all but one color (red, white or blue). Now it is a binary image, which opencv likes. I found the contours of the image using cvFindContours, and found the centers of each contour by using image moments. (tutorial found here:http://www.aishack.in/2010/07/tracki...cts-in-opencv/) -note- this guy, who I admire a lot, used CvMoments *moments = (CvMoments*)malloc(sizeof(CvMoments)); cvMoments(imgYellowThresh, moments, 1); where I replaced my source from being an entire image to just the contour, so I could track multiple things at once. so mine code read CvMoments *moments = (CvMoments*)malloc(sizeof(CvMoments)); cvMoments(Contour, moments, 1); That gives subpixel accuracy for the center. Moving on. To draw the circle, I used cvApproxPoly, and said that if the result > 5, then I am going to make the assumption it is a circle, if it has < 5 sides, I don't like it. The next step is fitting a box around the contours. Then drawing the largest ellipse possible within that box. That ellipse is what is coloured on the image. I'll post the program up here whenever I get a chance to take it from a computer at school. Also, I only saved the frisbee that was closest to the camera per colour. So which one was lowest on the screen. Which one had the largest y value (opencv's coordinate plane is positive x to the right, positive y down). It was a simple algorithm that I actually used a lot in tracking the alliance wall: cvPoint CurrentFrisbee; double PrevClosestFrisbee = 0; if(CurrentFrisbee.y > PrevClosestFrisbee) { PrevClosestFrisbee = CurrentFrisbee; } A very simple yet very powerful conditional statement. If you have anymore questions I'd love to answer them. |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|