开始使用android openCV

时间:2016-08-13 19:08:04

标签: android opencv

我对Android和Java编程非常陌生,但我想开始开发一些应用程序。我已经安装了Eclipse,Android SDK和Open CV,我可以编译样本,但是我无法理解它们是如何工作的,因为它与C / C ++非常不同,我知道这些。我试图在互联网上找到一些东西,但我找不到很多初学者的教程。 我现在要做的是一个识别形状和颜色的应用程序。例如,如果我选择黄色圆圈,应用程序将突出显示黄色圆圈。首先,我将在纸上打印此image并尝试使用我的智能手机识别。

PS:对不起我的英文。

1 个答案:

答案 0 :(得分:0)

There is a great article仅针对您的问题,但它位于AForge.NET框架上。尽管如此,这里的信息可能会引导您走上正确的道路或方法。

如果我使用OpenCV,我会采取以下步骤来解决此问题:

  • 首先,我会提取不同颜色的形状。有一个名为InRange的函数(也许你可以在问题和答案中找到一些帮助{ {3}}。不同颜色的提取形状应该存储在不同的Mat对象中,黄色的fe形状存储在一个Mat中,蓝色存储在另一个Mat中等等。通过这种提取分离不同的颜色形状将更容易进行以下处理。 / LI>
  • 之后应该进行轮廓搜索。可以使用CannyfindContours函数完成,但第二个函数会优先,因为在{{1}之后你的图像将是二进制(掩码)。然后,每个形状都应存储在单独的Mat对象中,使用InRange函数绘制它们。它应该是一个多维数组左右,因为首先你的形状应该按颜色排序。
  • 然后,最简单的事情就是找到圈子。这可以通过drawContours函数简单地完成。这个函数可能会误解圆形五边形,但使用适当的参数它应该可以完美地工作。更多信息HERE。现在您知道哪些形状是圆形及其颜色。
  • 最后找到其余形状及其类型。这并不容易。 第一个 方式(我可能先尝试一下)将使用houghCircles函数简化您的轮廓。然后,为了精确起见,您可以使用approxPolyDP。在那之后,如果需要的话,用下面的线检查每条线的角度,这样你就可以找到一起形成一条线,比如说,~182-178度(几乎是一条直线)。这些行应合并为一行,因为这是轮廓简化的错误。检查形状(或简化轮廓)有多少行,这是形状的类型。 SECOND 方法会在轮廓上找到convexHull。然后,检查每条线与另一条线的碰撞,找出它们中有多少在这里并形成具有该数据的形状。更多信息HERE

正如您从我的文字中所理解的那样,这项任务并非易事。使用任何方法都不容易,但这肯定是可能的,这是一个非常常见的任务,可以找到很多关于此的信息。