【发布时间】:2017-11-16 23:19:40
【问题描述】:
我一直在 mac 上成功使用 dlib 对象检测。现在我想在 iOS 应用程序中使用它。然而,在花费了无数个小时之后,dlib 对象检测器总是返回零矩形。
ifstream fin(dataDir + "/object_detector.svm", ios::binary);
typedef dlib::scan_fhog_pyramid<dlib::pyramid_down<6> > image_scanner_type;
dlib::object_detector<image_scanner_type> detector;
dlib::deserialize(detector, fin);
vector<dlib::rectangle> dets = detector(dlibImage);
为了确保不是因为图像不同,我使用了完全相同的图像,检测器在 mac 上返回 1 次命中。我还从 mac 和 iOS 中的部分图像打印了 uchar,它返回相同的值。所以图像数据是完全一样的。
可能没有为 iOS 正确构建 dlib 库。我为此尝试了多种方法。从 /example/build 目录,调用了以下命令。
cmake -G Xcode ..
cmake --build . --config Release
它在 dlib_build 目录中生成了 dlib.xcodeproj 项目。我在 xcode 中打开项目,将架构更改为 iOS(armv7,arm64)并重建库。该库已链接到我的项目。我用这种方法得到了零结果。 dlib 是在调试模式下构建的;我没有收到任何断言错误。
尝试的第二种方法是在我的项目中使用 dlib/all/source.app。我使用了 cmake 或 dlib.xcodeproj 项目使用的所有处理标志。没有错误,但仍然没有匹配项。
我将我的 xcode 项目的构建设置与 cmake 生成的 examples.xcodeproj 进行了比较,结果是一样的。还检查了 https://github.com/zweigraf/face-landmarking-ios 的 xcode 项目,但没有帮助。
奇怪的是检测器需要几秒钟来处理并返回零匹配。所以它正在做某事。我希望有一个可以为检测器打开的调试日志记录。
我没有想法。如果有人可以提供帮助,将不胜感激。 dlib 是一个很棒的库,我只是希望它在 iOS 上更容易使用。
【问题讨论】:
标签: c++ ios object-detection dlib