OpenCV 3 HOG 检测的信心?

Posted

技术标签:

【中文标题】OpenCV 3 HOG 检测的信心?【英文标题】:OpenCV 3 HOG Detection confidence? 【发布时间】:2016-10-13 08:10:23 【问题描述】:

我正在使用 OpenCV 3 HOG 人员检测器来检测在我的笔记本电脑网络摄像头前移动的人员。检测部分工作得很好,但我想从 HOG 分类器中获得信心,我认为这应该是可能的。

我使用以下代码来获取检测到的对象的边界框:

std::vector< cv::Rect> found_locations_rect;
d_hog->detectMultiScale(rGpuImg, found_locations_rect);

根据 Intellisense 提示,应该可以使用以下方法提取置信度:

void detectMultiScale(cv::InputArray img, std::vector<cv::Rect> &found_locations, std::vector<double> *confidence = (std::vector<double> *)0);

但我不知道如何声明和初始化 *confidence 变量,你能帮帮我吗?

【问题讨论】:

【参考方案1】:

你可以看看official OpenCV documentation,它声明了这个detectMultiScale函数的重载(CPU实现):

virtual void cv::HOGDescriptor::detectMultiScale    (   InputArray  img,
std::vector< Rect > &   foundLocations,
std::vector< double > &     foundWeights,
double  hitThreshold = 0,
Size    winStride = Size(),
Size    padding = Size(),
double  scale = 1.05,
double  finalThreshold = 2.0,
bool    useMeanshiftGrouping = false 
)       const

和for GPU

virtual void cv::cuda::HOG::detectMultiScale    (   InputArray  img,
std::vector< Rect > &   found_locations,
std::vector< double > *     confidences = NULL 
)   

所以你可以简单地调用它(CPU模式):

std::vector< cv::Rect> found_locations_rect;
std::vector<double> found_weights;
d_hog->detectMultiScale(mat, found_locations_rect, found_weights);

或(GPU实现):

std::vector< cv::Rect> found_locations_rect;
std::vector<double> confidences;
d_hog->detectMultiScale(rGpuImg, found_locations_rect, &confidences);

如果它不起作用,OpenCV 会抛出异常。你可以这样显示:

try

    std::vector< cv::Rect> found_locations_rect;
    std::vector<double> confidences;
    d_hog->detectMultiScale(rGpuImg, found_locations_rect, &confidences);

catch(const std::exception& e)

    std::cout << e.what() << std::endl;

之后就可以解决问题了

【讨论】:

谢谢,但我收到以下异常: 在 HOG_GPU.exe 中的 0x00007FFA8C537788 处引发异常:Microsoft C++ 异常:内存位置 0x0000005431F0E690 处的 cv::Exception。 HOG_GPU.exe 中 0x00007FFA8C537788 处未处理的异常:Microsoft C++ 异常:内存位置 0x0000005431F0E690 处的 cv::Exception。 @ErikS,如果你有一个例外 - 向我们展示它的文本 异常是:在 HOG_GPU.exe 中的 0x00007FFA8C537788 处引发的异常:Microsoft C++ 异常:cv::Exception at memory location 0x0000005D5CBEEB50。 HOG_GPU.exe 中 0x00007FFA8C537788 处未处理的异常:Microsoft C++ 异常:内存位置 0x0000005D5CBEEB50 处的 cv::Exception。 没有。不是异常的地址 - 而是发生异常时的终端输出。什么是“内部”异常?

以上是关于OpenCV 3 HOG 检测的信心?的主要内容,如果未能解决你的问题,请参考以下文章

opencv进阶-HOG+SVM行人检测(已训练好的分类器)

OpenCV - 使用 SVM 和 HOG 进行人员检测

提高 OpenCV HOG 人员检测器的准确性

Python和openCV:HOG描述符检测多尺度返回负边界框

Opencv HOG特征检测

opencv学习笔记SVM+HOG