Не могли бы вы немного подробнее рассказать о своих требованиях?А именно, какой тип внешнего вида вы ожидаете / насколько вы контролируете окружающую среду.Какие у вас есть ограничения в отношении скорости / мощности / ресурсов?
Без них я могу дать лишь общую оценку 3 путям, о которых вы говорите.
1.Хаар будет работать хорошо и быстро, особенно для распознавания.
Обратите внимание, что Haar не очень хорошо работает для 3D, если вы не тренируетесь с полным спектром шаблонов, чтобы охватить различные перспективы.Детским приложением-каскадом каскадов Хаара является система распознавания лиц Виолы Джонса, которая в значительной степени ориентирована на лобные лица (безусловно, может быть обучена многим другим вещам)
Учебное пособие по обучению Хаару с использованием OpenCV см. здесь .
2.Попробуйте NCC или, что еще лучше, отслеживание Лукаса Канаде (cvCalcOpticalFlowPyrLK, который является пирамидальным, как в грубом-точном LK - четырехуровневая пирамида обычно работает хорошо) для шаблона.Обычно хорошо до 10% масштаба или 10 градусов вращения без изменения шаблона.Кроме того, у вас могут быть автоматически развивающиеся шаблоны, которые могут дрейфовать со временем.
Краткое руководство по оптическому потоку / отслеживанию см. В this .
3.SIFT / SURF действительно будет работать очень хорошо.Я бы предложил дополнительный шаг геометрической проверки для удаления ложных совпадений.
Я был бы немного обеспокоен количеством вычислительного времени.Если нет существенного вращения освещения / масштаба / в плоскости, то SIFT, вероятно, излишним.Если вы действительно нуждаетесь в этом, проверьте превосходную SIFTGPU от Changchang Wu.Примечание: третье лицо, а не OpenCV.