mirror of
https://github.com/hybridgroup/gocv
synced 2025-08-25 08:41:04 +08:00
Add HOGDescriptor to objdetect
Signed-off-by: deadprogram <ron@hybridgroup.com>
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
#include "objdetect.h"
|
||||
|
||||
// CascadeClassifier
|
||||
|
||||
CascadeClassifier CascadeClassifier_New() {
|
||||
return new cv::CascadeClassifier();
|
||||
}
|
||||
@@ -14,14 +15,47 @@ int CascadeClassifier_Load(CascadeClassifier cs, const char* name) {
|
||||
}
|
||||
|
||||
struct Rects CascadeClassifier_DetectMultiScale(CascadeClassifier cs, Mat img) {
|
||||
std::vector<cv::Rect> faces;
|
||||
cs->detectMultiScale(*img, faces); // TODO control default parameter
|
||||
Rect* rects = new Rect[faces.size()];
|
||||
for (size_t i = 0; i < faces.size(); ++i) {
|
||||
Rect r = {faces[i].x, faces[i].y, faces[i].width, faces[i].height};
|
||||
std::vector<cv::Rect> detected;
|
||||
cs->detectMultiScale(*img, detected); // TODO control default parameter
|
||||
Rect* rects = new Rect[detected.size()];
|
||||
for (size_t i = 0; i < detected.size(); ++i) {
|
||||
Rect r = {detected[i].x, detected[i].y, detected[i].width, detected[i].height};
|
||||
rects[i] = r;
|
||||
}
|
||||
Rects ret = {rects, (int)faces.size()};
|
||||
Rects ret = {rects, (int)detected.size()};
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
// HOGDescriptor
|
||||
|
||||
HOGDescriptor HOGDescriptor_New() {
|
||||
return new cv::HOGDescriptor();
|
||||
}
|
||||
|
||||
void HOGDescriptor_Close(HOGDescriptor hog) {
|
||||
delete hog;
|
||||
}
|
||||
|
||||
int HOGDescriptor_Load(HOGDescriptor hog, const char* name) {
|
||||
return hog->load(name);
|
||||
}
|
||||
|
||||
struct Rects HOGDescriptor_DetectMultiScale(HOGDescriptor hog, Mat img) {
|
||||
std::vector<cv::Rect> detected;
|
||||
hog->detectMultiScale(*img, detected); // TODO control default parameter
|
||||
Rect* rects = new Rect[detected.size()];
|
||||
for (size_t i = 0; i < detected.size(); ++i) {
|
||||
Rect r = {detected[i].x, detected[i].y, detected[i].width, detected[i].height};
|
||||
rects[i] = r;
|
||||
}
|
||||
Rects ret = {rects, (int)detected.size()};
|
||||
return ret;
|
||||
}
|
||||
|
||||
Mat HOG_GetDefaultPeopleDetector() {
|
||||
return new cv::Mat(cv::HOGDescriptor::getDefaultPeopleDetector());
|
||||
}
|
||||
|
||||
void HOGDescriptor_SetSVMDetector(HOGDescriptor hog, Mat det) {
|
||||
hog->setSVMDetector(*det);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user