我目前正在使用 Python 学习 OpenCV API,一切都很好。我正在取得不错的进展。它的一部分来自 Python 语法的简单性,而不是与我尚未尝试过的 C++ 一起使用它。我开始意识到,如果我打算做任何生产质量的事情,我必须在某些时候对 OpenCV 的 C++ 绑定有所了解。
就在最近,我遇到了 dlib,它还声称可以完成 OpenCV 所做的所有事情以及更多。它是用 C++ 编写的,并且也提供 Python API(惊喜)。任何人都可以根据自己的实施经验为 dlib 担保吗?
我已将 OpenCV 和 dlib 广泛用于人脸检测和人脸识别,与基于 OpenCV Haar 的人脸检测器相比,dlib 准确得多。(请注意,OpenCV 现在有一个 DNN 模块,我们可以在其中获得基于深度学习的人脸检测器和人脸识别器模型。)
我正在比较 OpenCV-DNN 与 Dlib 的人脸检测/识别。完成后将发布结果。
dlib 中有许多有用的功能,但对于任何其他 CV 任务,我更喜欢 OpenCV。
编辑:正如所承诺的,我对 OpenCV 与 Dlib 人脸检测方法进行了详细比较。
这是我的结论:
在大多数应用程序中,我们事先不会知道图像中人脸的大小。因此,最好使用 OpenCV – DNN 方法,因为它非常快速且非常准确,即使对于小尺寸的人脸也是如此。它还可以检测各种角度的人脸。我们建议在大多数情况下使用 OpenCV-DNN
Dlib HoG 是 CPU 上最快的方法。但它不会检测到小尺寸的人脸(< 70x70)。因此,如果您知道您的应用程序不会处理非常小的人脸(例如自拍应用程序),那么基于 HoG 的人脸检测器是一个更好的选择。此外,如果您可以使用 GPU,那么 MMOD 人脸检测器是最佳选择,因为它在 GPU 上速度非常快,并且还提供各种角度的检测。
有关更多详细信息,您可以查看此博客