7

我想做一个涉及计算机视觉的项目。主要是物体检测/识别。经过一番研究,我不断回到 OpenCV。但是所有的教程都是从 2008 年开始的(我想当时它有点大)。它显然不能在 Mac 上的 Python 中编译。我正在使用 Xcode 中的 C++ 框架,但是没有一个教程可以工作,因为它们已经过时并且文档从我可以解析的内容中吸收。

对于我正在做的事情是否有更好的解决方案,是否有人对学习如何使用 OpenCV 有任何建议?

谢谢

4

3 回答 3

7

我在开始使用 OpenCV 时遇到了类似的问题,根据我的经验,这实际上是学习它的最大障碍。这对我有用:

  1. 本书:《OpenCV 2 计算机视觉应用程序编程食谱》。这是最新的书,并提供了有关如何解决不同计算机视觉问题的示例(您可以使用“Look Inside!”在亚马逊上查看目录)。它确实帮助我轻松进入 OpenCV 并熟悉该库的工作方式。

  2. 就像其他人所说的那样,这些样本非常有帮助。对于本书跳过或仅简要介绍的内容,您通常可以在查看示例时找到更详细的示例。您还可以在本书和示例之间找到解决相同问题的不同方法。例如,对于查找关键点/特征,本书展示了一个使用 FAST 特征的示例:

    vector<KeyPoint> keypoints;
    FastFeatureDetector fast(40);
    fast.detect(image, keypoints);

    但是在示例中,您会发现一种更灵活的方法(如果您想选择使用哪种关键点检测算法):

    vector<KeyPoint> keypoints;
    Ptr<FeatureDetector> featureDetector = FeatureDetector::create("FAST");
    featureDetector->detect(image, keypoints);

根据我的经验,事情最终会开始点击,对于更具体的问题,您会开始在博客或 StackOverflow 上找到最新信息。

于 2011-12-03T04:16:43.900 回答
2

让我补充几点。首先,我可以向您保证,OpenCV 的 Python 绑定可以在 Mac 上运行。我每天都使用它们。

许多人喜欢 OpenCV 的原因有很多:

  1. 许可证很好,对集成到商业产品等方面很友好。
  2. 从技术角度来看,这是相当不错的。它为您提供了最先进算法的参考实现。
  3. 与替代品相比,它往往相当快(我在看你的 Matlab)。

就像生活中的一切一样,它并不完美:

  1. 这是移动目标的软件库的一个很好的例子。我有一个使用 OpenCV 的 300 行 python 程序,每隔几个月发布新版本的 OpenCV 时,我必须更改它以适应新的函数名称/调用约定等。该库确实进步了很多,但是它每年必须更改相同的程序 3 次,这很痛苦。
  2. 它有一个学习曲线,就像计算机视觉本身一样,技术性很强,不容易学习。

还有其他选择(具有其他优点和缺点)带有图像处理工具箱的 MATLAB 就是这样一个例子。

于 2011-12-03T00:11:36.573 回答
0

想到的最简单的答案是阅读示例代码并稍微了解一下,并尝试您的想法是否有效。api 确实发生了变化,而且大部分教程都是为 OpenCV 的第一个版本编写的,看起来没有人费心重写它们。然而,它背后的核心思想并没有改变。因此,如果您找到回答您的问题的教程,但使用旧 API 编写,只需查看文档以了解已使用函数的现代替换。这并不容易和快速,但看起来很有效。如果您使用最新(实际上是 2.3)版本,我建议同时使用2.1 文档2.3 文档 + 教程. 您还应该查看应该与库一起安装的示例。有很多关于如何使用文档中未提及的结构和技巧的提示。最后,不要害怕查看库本身的代码(如果您自己编译它)。不幸的是,这是我知道的唯一来源,例如检查哪些代码对应于哪种类型的Mat对象。

于 2011-12-02T13:34:51.433 回答