c++ - 对象检测 : Training Requried or No Training Required?

标签 c++ opencv image-processing computer-vision object-detection

这个问题与对象检测有关,基本上是检测任何“已知”对象。例如,假设我有以下对象。

  1. 表格
  2. 瓶子。
  3. 相机
  4. 汽车

我将从所有这些单独的对象中拍摄 4 张照片。左边一个,右边一个,上下两个。我本来以为用这4张照片每个都可以识别这些物体,因为你有所有4个角度的照片,不管你怎么看物体你都能检测到它。

但我对某些人关于使用来自每个对象的数千张正面和负面图像训练引擎的想法感到困惑。我真的不认为这是必需的。

所以简单来说,我的问题是,为了识别一个物体,我需要这成千上万的正面和负面的物体吗?还是仅仅从 4 个角度拍摄 4 张照片就足够了?

我希望为此使用 OpenCV。

更新

其实最主要的是这样的。想象一下我有两台笔记本电脑。一个是戴尔,另一个是惠普。两者都是笔记本电脑,但您知道,它们有明显的差异,包括 Logo 。我们可以使用 Feature Description 来做到这一点吗? ?如果不是,“训练”过程有多“辛苦”?需要多少张照片?

更新 2 我需要检测“特定”对象。不是所有的汽车,所有的瓶子等。例如,“Maruti Car Model 123”和“Ferrari Car Model 234”都是汽车,但有所不同。想象一下,我有上述车型的 Maruti 和 Ferrari 的照片,然后我需要检测它们。我不必担心其他汽车或车辆,甚至 Maruti 和 Ferrari 的其他型号。但上述“Maruti Car Model 123”应识别为“Maruti Car Model 123”,上述“Ferrari Car Model 234”应识别为“Ferrari Car Model 234”。为此我需要多少张照片?

最佳答案

答案:

  1. 如果您想检测特定对象并且不需要考虑视点变化,您可以使用 2D 特征: http://docs.opencv.org/doc/tutorials/features2d/feature_homography/feature_homography.html

  2. 要区分 2 个 Logo ,您可能需要为每个 Logo 构建一个检测器,该检测器将在一组图像上进行训练。例如,您可以训练 Haar 级联分类器。

  3. 要区分不同型号的汽车,您可能需要使用每辆汽车的训练图像来训练分类器。但是,我遇到了一个使用最近邻方法执行此操作的应用程序 - 它只是从给定的测试图像中提取特征并将其与不同车型的一组已知图像进行比较。

此外,如果您对应用程序进行更多解释,我可以推荐一些方法和包。

关于c++ - 对象检测 : Training Requried or No Training Required?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23490787/

相关文章:

c++ - 应用程序退出时 CEF 崩溃(QT5+CEF3.2526)

c++ - C++ 98 标准在哪里指定本地声明的模板名称不依赖?

python - 安装并运行 Mac Python Open CV

c# - 在两个图像之间转换的最有效方法是什么(如 Mac 墙纸更改)

c# - asp.net 从数据库中读取图片并输出

c++ - 多线程opencv视频处理Qt/C++

c++ - 如何使用 C++ 查找 N x M 数组内最小值(不同列)的总和?

python - OpenCV - 应用霍夫线变换后裁剪图像

node.js - 使用opencv和node比较2张人脸的相似度

c++ - 在opencv中按权重图像划分图像的每个 channel