图像识别OpenCV

Image recognition OpenCV

我的项目是分析包含鸟类图像的数据集。之后,程序应该识别输入图像是否是鸟。

我打算在 C++ 中使用 OpenCV。有人可以建议我所需的模块以及在读取图像数据集后识别输入是否为鸟的程序的程序。 (我是 OpenCV 的初学者)

为了完成这项任务,您必须训练自己的级联分类器,这对初学者来说绝非易事。

有关如何实现这一点的更多信息,请自行研究,因为网上有大量示例。我在下面列出了一个 link 来帮助您入门。

http://docs.opencv.org/doc/user_guide/ug_traincascade.html

有很多方法可以解决这个问题,但我认为最有可能成功的解决方案是训练您自己的 haar 级联。

您将需要 很多 个包含鸟类的图像和 helluva 很多没有 的图像birds in. 如果你已经可以访问这个数据集,你需要分析,那么你已经有很多图像(其中一些可以用来训练)

haar 级联本质上是在图像中搜索它经过训练可以识别的模式(例如 OpenCV 附带的面部、眼睛、鼻子等)

Here 是 link 到 tutorial/tools 的结合,可以尽可能轻松地训练您自己的级联。

按照说明进行操作,最后您应该有一个 XML 文件,它将成为您的 Cascade for birds。

Here 是关于如何使用 新级联的教程。我建议您阅读级联分类器的一般工作原理,因为它将帮助您了解要训练的图像类型,以及您可以对图像进行哪些调整以确保尽可能多的检测机会。

您可以采用的另一种选择是仅使用 OpenCV 进行预处理,然后将图像发送到神经网络进行分类。

这可能涉及从图像中移除尽可能多的 "background noise" 信息,例如移除亮绿色(当然除非你有亮绿色的鸟)、平滑图像并缩小图像(增加一些重量)断网络),然后将其余信息插入您的网络。我不知道这会有多成功,因为我从未使用网络进行检测,仅用于人脸识别,但它在这方面做得非常好,所以试一试。

祝你好运,希望对你有所帮助。