我已经使用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中那样返回三个信息(框,置信度,detector_idxs),从我所看到的,我认为它只会返回盒子。
您知道我是否做对了吗?如何获得我需要的这三个信息?
编辑01: 使用功能Erros:
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
答案 0 :(得分:0)
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矩形= detection.first()将元组分为不同的向量,以此类推,用于detection.second()和detection.third()。