Skip to content

Commit 88a585a

Browse files
committed
Merge branch 'master' of https://github.com/amov-lab/Prometheus
2 parents bc8f3d7 + 7e08d6b commit 88a585a

File tree

324 files changed

+80
-172
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

324 files changed

+80
-172
lines changed

Modules/object_detection/cpp_nodes/ellipse_det.cpp

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ bool image_status = false;
7474
boost::shared_mutex mutex_image_status;
7575

7676
EllipseDetector ellipse_detector;
77+
HOGDescriptor hog(Size(28, 28), Size(4, 4), Size(4, 4), Size(4, 4), 9);
78+
bool use_hog = true;
7779

7880

7981
// 图像接收回调函数,接收web_cam的话题,并将图像保存在cam_image_copy中
@@ -204,6 +206,23 @@ vector<float> hist_feature(cv::Mat& resized_im) // 生成直方图,带入形
204206
{
205207
feats[i] /= total;
206208
}
209+
210+
if (use_hog)
211+
{
212+
cv::Mat resized_im_gray;
213+
cvtColor(resized_im, resized_im_gray, CV_BGR2GRAY);
214+
215+
// cout << "w, h: " << resized_im_gray.cols << ", " << resized_im_gray.rows << endl;
216+
vector<float> descriptors; // HOG描述子向量
217+
hog.compute(resized_im_gray, descriptors, Size(4, 4));
218+
feats.insert(
219+
feats.end(),
220+
std::make_move_iterator(descriptors.begin()),
221+
std::make_move_iterator(descriptors.end())
222+
);
223+
// cout << "descriptors size" << descriptors.size() << endl;
224+
// cout << "feats size" << feats.size() << endl;
225+
}
207226
return feats; // 返回feats
208227
}
209228

@@ -222,7 +241,7 @@ Ptr<SVM> train_svm_classifier(std::string train_imlist, std::string train_imdir)
222241
while (ifs >> im_name >> label)
223242
{
224243
cout << im_name << " " << label << endl;
225-
cout << train_imdir + im_name << endl;
244+
cout << train_imdir + "/" + im_name << endl;
226245
Mat im_one = imread(train_imdir + "/" + im_name, 1);
227246
all_labels.push_back(label);
228247

@@ -234,10 +253,15 @@ Ptr<SVM> train_svm_classifier(std::string train_imlist, std::string train_imdir)
234253
all_feats.push_back(feats);
235254
}
236255

237-
Mat trainingDataMat(all_feats.size(), 30, CV_32FC1);
256+
int feats_len = 30;
257+
if (use_hog)
258+
{
259+
feats_len = 471;
260+
}
261+
Mat trainingDataMat(all_feats.size(), feats_len, CV_32FC1);
238262
Mat labelsMat(all_feats.size(), 1, CV_32S);
239263
for (int i = 0; i < all_feats.size(); i++) {
240-
for (int t = 0; t < 30; t++) {
264+
for (int t = 0; t < feats_len; t++) {
241265
float tmp = all_feats[i][t]; // !!!!!!!!!!!!!!!
242266
float* pf = trainingDataMat.ptr<float>(i, t);
243267
*pf = tmp;
@@ -526,8 +550,13 @@ int main(int argc, char **argv)
526550
cv::cvtColor(center_det, center_det, COLOR_BGR2HSV);
527551
std::vector<float> feat = hist_feature(center_det);
528552

529-
cv::Mat predictDataMat(1, 30, CV_32F);
530-
for (int i=0;i<30;i++)
553+
int feats_len = 30;
554+
if (use_hog)
555+
{
556+
feats_len = 471;
557+
}
558+
cv::Mat predictDataMat(1, feats_len, CV_32F);
559+
for (int i=0; i<feats_len; i++)
531560
{
532561
predictDataMat.at<float>(i) = feat[i];
533562
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

0 commit comments

Comments
 (0)