re-arrange, use vector<double> to facilitate pass back to python

This commit is contained in:
Jack Culpepper 2015-03-12 07:39:42 +00:00
parent 154f9e4931
commit 9b78932ab1
2 changed files with 34 additions and 31 deletions

View File

@ -350,6 +350,18 @@ object_detector<scan_fhog_pyramid<pyramid_down<6>>>.")
ensures \n\ ensures \n\
- This function runs the object detector on the input image and returns \n\ - This function runs the object detector on the input image and returns \n\
a list of detections. \n\ a list of detections. \n\
- Upsamples the image upsample_num_times before running the basic \n\
detector. If you don't know how many times you want to upsample then \n\
don't provide a value for upsample_num_times and an appropriate \n\
default will be used.")
.def("run", run_rect_detector, (arg("image"), arg("upsample_num_times")),
"requires \n\
- image is a numpy ndarray containing either an 8bit grayscale or RGB \n\
image. \n\
- upsample_num_times >= 0 \n\
ensures \n\
- This function runs the object detector on the input image and returns \n\
a tuple of (list of detections, list of scores, list of weight_indices). \n\
- Upsamples the image upsample_num_times before running the basic \n\ - Upsamples the image upsample_num_times before running the basic \n\
detector. If you don't know how many times you want to upsample then \n\ detector. If you don't know how many times you want to upsample then \n\
don't provide a value for upsample_num_times and an appropriate \n\ don't provide a value for upsample_num_times and an appropriate \n\
@ -383,18 +395,6 @@ ensures \n\
ensures \n\ ensures \n\
- This function runs the object detector on the input image and returns \n\ - This function runs the object detector on the input image and returns \n\
a list of detections.") a list of detections.")
.def("run", &type::run_detector3, (arg("image"), arg("upsample_num_times")),
"requires \n\
- image is a numpy ndarray containing either an 8bit grayscale or RGB \n\
image. \n\
- upsample_num_times >= 0 \n\
ensures \n\
- This function runs the object detector on the input image and returns \n\
a tuple of (list of detections, list of scores, list of weight_indices). \n\
- Upsamples the image upsample_num_times before running the basic \n\
detector. If you don't know how many times you want to upsample then \n\
don't provide a value for upsample_num_times and an appropriate \n\
default will be used.")
.def("save", save_simple_object_detector_py, (arg("detector_output_filename")), "Save a simple_object_detector to the provided path.") .def("save", save_simple_object_detector_py, (arg("detector_output_filename")), "Save a simple_object_detector to the provided path.")
.def_pickle(serialize_pickle<type>()); .def_pickle(serialize_pickle<type>());
} }

View File

@ -17,7 +17,7 @@ namespace dlib
std::vector<rect_detection>& rect_detections, std::vector<rect_detection>& rect_detections,
std::vector<rectangle>& rectangles, std::vector<rectangle>& rectangles,
std::vector<double>& detection_confidences, std::vector<double>& detection_confidences,
std::vector<int>& weight_indices std::vector<double>& weight_indices
) )
{ {
rectangles.clear(); rectangles.clear();
@ -37,7 +37,7 @@ namespace dlib
boost::python::object img, boost::python::object img,
const unsigned int upsampling_amount, const unsigned int upsampling_amount,
std::vector<double>& detection_confidences, std::vector<double>& detection_confidences,
std::vector<int>& weight_indices std::vector<double>& weight_indices
) )
{ {
pyramid_down<2> pyr; pyramid_down<2> pyr;
@ -111,6 +111,24 @@ namespace dlib
} }
} }
inline boost::python::tuple run_rect_detector (
dlib::simple_object_detector& detector,
boost::python::object img,
const unsigned int upsampling_amount)
{
boost::python::tuple t;
std::vector<double> detection_confidences;
std::vector<double> weight_indices;
std::vector<rectangle> rectangles;
rectangles = run_detector_with_upscale(detector, img, upsampling_amount,
detection_confidences, weight_indices);
return boost::python::make_tuple(rectangles,
detection_confidences, weight_indices);
}
struct simple_object_detector_py struct simple_object_detector_py
{ {
simple_object_detector detector; simple_object_detector detector;
@ -124,7 +142,7 @@ namespace dlib
const unsigned int upsampling_amount_) const unsigned int upsampling_amount_)
{ {
std::vector<double> detection_confidences; std::vector<double> detection_confidences;
std::vector<int> weight_indices; std::vector<double> weight_indices;
return run_detector_with_upscale(detector, img, upsampling_amount_, return run_detector_with_upscale(detector, img, upsampling_amount_,
detection_confidences, weight_indices); detection_confidences, weight_indices);
@ -133,27 +151,12 @@ namespace dlib
std::vector<dlib::rectangle> run_detector2 (boost::python::object img) std::vector<dlib::rectangle> run_detector2 (boost::python::object img)
{ {
std::vector<double> detection_confidences; std::vector<double> detection_confidences;
std::vector<int> weight_indices; std::vector<double> weight_indices;
return run_detector_with_upscale(detector, img, upsampling_amount, return run_detector_with_upscale(detector, img, upsampling_amount,
detection_confidences, weight_indices); detection_confidences, weight_indices);
} }
boost::python::tuple run_detector3 (boost::python::object img,
const unsigned int upsampling_amount_)
{
boost::python::tuple t;
std::vector<double> detection_confidences;
std::vector<int> weight_indices;
std::vector<rectangle> rectangles;
rectangles = run_detector_with_upscale(detector, img, upsampling_amount,
detection_confidences, weight_indices);
return boost::python::make_tuple(rectangles,
detection_confidences, weight_indices);
}
}; };
} }