我目前在一个机器人团队为我的高中,我的目标是使用我们的kinect来检测球在今年的游戏中使用simplecv和openkinect。我目前被困在一个我的导师和我似乎无法解决的问题上。代码所做的是从kinect获取一个实时的深度地图提要,并对其进行二进制化,一旦它完成了,它就会查找blobs并试图找到循环blobs。最后,它在圆球上画一个圆圈。问题是,代码能够找出没有问题的地方,但是找不到循环的问题。我处于死胡同,希望社会上有人能帮助我。谢谢,这是我们看到的代码和图像
from SimpleCV import *
cam = Kinect()
display = SimpleCV.Display()
while display.isNotDone():
depth = cam.getDepth().flipHorizontal()
img2 = cam.getImage().flipHorizontal()
filtered = depth.stretch(200,255)
segmented = filtered.binarize(200)
blobs = segmented.findBlobs()
if blobs:
circles = blobs.filter([b.isCircle() for b in blobs])
if circles:
img2.drawCircle((circles[-1].x, circles[-1].y), circles[-1].radius(),SimpleCV.Color.RED,3)
img2.drawText("FOUND A BALL", 50,50,color=Color.RED,fontsize=48)
img2.sideBySide(segmented).show()

发布于 2014-02-10 00:34:12
我已经解决了这个问题,下面是新版本的代码。对不起,这次没有屏幕盖。
import SimpleCV
from SimpleCV import *
display = SimpleCV.Display()
cam = Kinect()
normaldisplay = True
while display.isNotDone():
if display.mouseRight:
normaldisplay = not(normaldisplay)
print "Display Mode:", "Normal" if normaldisplay else "Segmented"
img = cam.getDepth().flipHorizontal()
img2 = cam.getImage().flipHorizontal()
dist = img.colorDistance(SimpleCV.Color.BLACK).dilate(2)
segmented = dist.stretch(200,255)
binar = segmented.binarize(200)
erode = binar.erode(2)
blobs = erode.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()https://stackoverflow.com/questions/21568750
复制相似问题