2013-03-17 85 views
3

我正在开发一个项目,在该项目中,我需要编程一个Raspberry Pi来从网络摄像头获取图像,搜索该图像以找出一个框,并通过它的大小比例来确定它是哪个框。这些箱子将成为环境其他部分的独特颜色。确定从箱子和角度到箱子的距离也是很好的。Python定位系统

我见过的一切都似乎表明这应该是可能的,但经过几天的搜索,我还没有找到任何能够帮助我做到这一点的东西。这个项目是我第一次使用Python,所以我非常新鲜。任何帮助,即使如何做到这一点的一小部分将不胜感激。

这是我迄今为止的工作代码。这不是很多,它是所有从摄像头抓取的图像:/

import imgproc 
from img imgproc * 
camera = Camera(160, 120) 
viewer = Viewer(160, 120) 
n = 1 
while (n > 0): 
    img = camera.grabImage() 
    viewer.displayImage(img) 

回答

2

这不是一个完整的解决方案,但对如何上手一些好的想法:)

首先,有OpenCV的Python绑定,一个开源免费的计算机视觉库,最初用C语言编写:http://opencv.willowgarage.com/documentation/python/index.html

解决计算机视觉问题时,你必须做的第一件事是预处理。特别是,知道盒子是不同的颜色有助于LOT - 这意味着我们可以根据颜色设定阈值,并使用诸如http://aishack.in/tutorials/thresholding/之类的技术在盒子不是黑色的位置创建图像,在盒子位于白色的位置创建图像。

然后,您将遵循类似于本博客中描述的Sudoku抓取器/解算器的过程 - 您可以进行斑点提取(http://en.wikipedia.org/wiki/Blob_extraction),然后执行hough变换以获取线条,然后可以将线条的距离彼此来确定盒子的比例。 http://aishack.in/tutorials/sudoku-grabber-with-opencv-plot/

差不多就只有了解人们的OpenCV的数独解算器,直到你得到它是如何工作的要点,因为有很多很好的教程,它是计算机视觉项目怎么走一个简单的例子:https://www.google.com.au/search?q=sudoku+opencv&aq=f&oq=sudoku+opencv&aqs=chrome.0.57j60l3j0l2.1506&sourceid=chrome&ie=UTF-8

0

你可能要尝试从github回购安装SimpleCV。使用SimpleCV,您应该可以使用Image.hueDistance命令获取blob的颜色。如果您使用findBlobs命令来查找您的方框,则每个blob应将其纵横比作为参数。我们刚刚发布了关于SimpleCV here的完整PyCon教程。您可以查看幻灯片here。我们听说在RaspberryPi上安装PyGame(SimpleCV依赖)有一些问题。 This walk through might address those issues