直方图匹配

时间:2015-10-13 01:59:34

标签: opencv histogram

我正在使用calcBackProject来查找框架中的对象,它可以很好地扫描所有框架。但我需要加强它

在某些时候,我的代码中有一个运动检测模板,在此基础上我为候选对象(移动并可能成为目标的对象)生成了轮廓。

我可以利用它来计算每个轮廓的直方图并将其与目标的直方图相匹配吗?

  • 如何计算每个轮廓的直方图? calcHist接受蒙版,但如何将轮廓作为蒙版传递 - 如何匹配?

1 个答案:

答案 0 :(得分:1)

将轮廓转换为蒙版并在calcHist中使用蒙版 在C ++中,它将像这样完成:

/**
 * Converts a contour to a binary mask.
 * The parameter mask should be a matrix of type CV_8UC1 with proper
 * size to hold the mask.
 * @param contour The contour to convert.
 * @param mask The Mat where the mask will be written. Must have proper size
 * and type before callign convertContourToMask.
 */
void convertContourToMask( const std::vector<cv::Point>& contour, cv::Mat& mask )
{
    std::vector<std::vector<cv::Point>> contoursVector;
    contoursVector.push_back( contour );
    cv::Scalar white = cv::Scalar(255);
    cv::Scalar black = cv::Scalar(0);
    mask.setTo(black);
    cv::drawContours(mask, contoursVector, -1, white, CV_FILLED);
}