问题描述
我被要求使用 opencv 识别图像中的徽标.讲师告诉我,我不需要做标志检测,只做标志识别.我在 C++ 中使用 opencv.我能知道最简单的方法吗?
I was asked to recognize logo in an image using opencv. The lecturer told me that I don't have to do logo detection but logo recognition only. I am using opencv in c++. Can I know the easiest way to do it??
Ps:计算机视觉新手.
Ps: newbie in computer vision.
推荐答案
这在很大程度上取决于您的图像类型.
It largely depends on your kind of images.
- 如果您的徽标占图像的 90%,则您不需要检测,因为您可能擅长使用颜色直方图.
- 如果徽标与图像相比较小,您应该找到"徽标,以便将您的比较重点放在该徽标上,而不是背景混乱上.
- 同一张图片上可以有多个徽标吗?
- 徽标始终完全可见?
- 标志是僵硬的?还是会变形?(例如衬衫或小瓶子上的徽标)
假设您要找到一个完整的刚性徽标,最简单的尝试是模板匹配.
Assuming that you have a single complete rigid logo to find, the simplest thing to try is template matching.
更准确的方法是匹配描述符.您还可以在 此处
A more accurate approach is to match descriptors. You can also see a related topic on SO here
其他更强大的方法需要在您的参考徽标上构建关键点星座,并在目标图像上匹配这些星座.请参阅此处和此处 举个例子.
Other more robust approaches would require to build constellations of keypoints on your reference logo, and match those constellations on the target image. See here and here for an example.
最后一点,在 Google 上玩得开心!
Last, but not least, have fun on Google!
这篇关于OpenCV 标志识别的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!