Skip to content

Instantly share code, notes, and snippets.

@xamox
Created April 21, 2012 18:05
Show Gist options
  • Save xamox/2438871 to your computer and use it in GitHub Desktop.
Save xamox/2438871 to your computer and use it in GitHub Desktop.
Object Tracking with SimpleCV (White Ball)
'''
This is how to track a white ball example using SimpleCV
The parameters may need to be adjusted to match the RGB color
of your object.
The demo video can be found at:
http://www.youtube.com/watch?v=jihxqg3kr-g
'''
print __doc__
import SimpleCV
display = SimpleCV.Display()
cam = SimpleCV.Camera()
normaldisplay = True
while display.isNotDone():
if display.mouseRight:
normaldisplay = not(normaldisplay)
print "Display Mode:", "Normal" if normaldisplay else "Segmented"
img = cam.getImage().flipHorizontal()
dist = img.colorDistance(SimpleCV.Color.BLACK).dilate(2)
segmented = dist.stretch(200,255)
blobs = segmented.findBlobs()
if blobs:
circles = blobs.filter([b.isCircle(0.2) for b in blobs])
if circles:
img.drawCircle((circles[-1].x, circles[-1].y), circles[-1].radius(),SimpleCV.Color.BLUE,3)
if normaldisplay:
img.show()
else:
segmented.show()
@KhanradCoder
Copy link

how would you change the colour of the ball it is trying to track?

@judas79
Copy link

judas79 commented May 29, 2015

This is truly great, but my windows is lagging compared to your video. I'm going to try this on a PCDuino mini, with a wifi arduCAM once I recieve my order from China; it will be a while. I tried editing the line, as posted above and got a black screen:
if circles:
circles.draw()
img.drawCircle((circles[-1].x, circles[-1].y), circles[-1].radius(),SimpleCV.Color.BLUE,3)

I also tried it without the parameters with the same black screen result, can you please fill in what I have omitted?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment