OpenCV HOGDescriptor OCR

时间:2014-12-17 07:16:51

标签: python c++ opencv

我正在将digits.py转换为来自OpenCV的c ++示例。 Digits.py位于python2 samples文件夹下。它是一个使用SVM识别字符的应用程序。

在预处理步骤期间,HOG(计算梯度的直方图)。为了用C ++做到这一点,使用cv :: HOGDescriptor :: compute()来获取每个图像bin的HOG值更方便。

https://github.com/Itseez/opencv/blob/5f590ebed084a5002c9013e11c519dcb139d47e9/samples/python2/digits.py

第126行。

在python中,他们使用Hellinger内核来改善样本辨别力。但是,我无法在compute()下的HOG.cpp中看到这种情况。

https://github.com/Itseez/opencv/blob/5f590ebed084a5002c9013e11c519dcb139d47e9/modules/objdetect/src/hog.cpp

我们如何将它应用于从cv :: HOGDescriptor.compute恢复的cv :: Mat?

1 个答案:

答案 0 :(得分:0)

为什么不尝试使用python示例中的相同内容?

Mat img = ...
Mat descr;
hog.compute(img, descr, ...);

float eps = 1e-7f;
descr /= sum(descr)[0] + eps; // same as: normalize(descr,descr,1,eps,NORM_L1);
sqrt(descr,descr);
descr /= norm(descr) + eps;  

// ... feed to svm