作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我已经使用 dlib 编写了 python 代码,但由于项目规范,我需要用 C++ 重写相同的代码。几乎都已完成,但最重要的是我无法在 C++ 中找到完全等效的内容。
python版本是:
[boxes, confidences, detector_idxs] = dlib.fhog_object_detector.run_multiple(detectors, image, upsample_num_times=1, adjust_threshold=0.0)
我尝试过的 C++ 是:
vector<rectangle> detection = evaluate_detectors(detectors, img, adjust_threshold);
我仍然没有运行代码,但我不确定我在 C++ 中使用的这个函数是否会像在 python 中一样返回三个信息(boxes、confidences、detector_idxs),据我所知,我认为它只会返回盒子。
你知道我的做法是否正确吗?我怎样才能获得我需要的这三个信息?
编辑 01:使用函数错误:
tuple<std::vector<dlib::rectangle>, list<T> confidences>, list<T> detector_idxs> = run_multiple_rect_detectors(detectores, img, upsampling_amount, adjust_threshold);
error C2065: 'T': undeclared identifier
error C2923: 'std::list': 'T' is not a valid template type argument for parameter '_Ty'
error C2903: 'allocator': symbol is neither a class template nor a function template
error C3203: 'allocator': unspecialized class template can't be used as a template argument for template parameter '_Alloc', expected a real type
error C2146: syntax error: missing '>' before identifier 'confidences'
error C2059: syntax error: ','
编辑 01-1:
error C2872: 'rectangle': ambiguous symbol
note: could be 'dlib::rectangle'
note: or 'rectangle'
error C2146: syntax error: missing '>' before identifier 'rectangles'
error C2653: 'pybind11': is not a class or namespace name
error C3861: 'run_multiple_rect_detectors': identifier not found
修复 VS 显示的语法错误后:
error C3861: 'run_multiple_rect_detectors': identifier not found
编辑 02:
Error C2027 use of undefined type 'dlib::image_traits<image_type>'
Error C2146 syntax error: missing ';' before identifier 'pixel_type'
Error C4430 missing type specifier - int assumed. Note: C++ does not support default-int
最佳答案
run_multiple(...)
看起来像是在调用 run_multiple_rect_detectors(...) ,假设是这样,您应该可以调用:
std::tuple<std::vector<rectangle> rectangles, std::vector<double> confidences, std::vector<unsigned long> detector_idxs> detection = dlib::run_multiple_rect_detectors(detectors, img, 1, 0.0);
1
是上采样量,0.0
是阈值。
因为 pybind 会自动在 C++11 和 Python 元组之间进行转换。
然后您可以使用 std::vector rectangles = detection.first() 将元组分成不同的 vector ,对于 detection.second() 和 detection.third() 依此类推。
关于python - 如何用C++重写Dlib的Python代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55668760/
我是一名优秀的程序员,十分优秀!