1

我正在做的是尝试在 OpenCV 中实现用于皮肤检测的皮肤概率图算法。

根据http://www.cse.unsw.edu.au/~icml2002/workshops/MLCV02/MLCV02-Morales.pdf和本教程http://www.morethantechnical.com/2013/03/05/skin-detection-with-probability-maps-and-elliptical-boundaries-opencv-wcode/

我的问题在于计算 hist 值的坐标:

从教程:

calcHist(&nRGB_frame,1,channels,mask,skin_Histogram,2,histSize,ranges,uniform,accumulate);
calcHist(&nRGB_frame,1,channels,~mask,non_skin_Histogram,2,histSize,ranges,uniform,accumulate);

计算直方图。比我正常化它们。在那之后:

for (int i=0; i<nrgb.rows; i++) {
        int gbin = cvRound((nrgb(i)[1] - 0)/range_dist[0] * hist_bins[0]);
        int rbin = cvRound((nrgb(i)[2] - low_range[1])/range_dist[1] * hist_bins[1]);
        float skin_hist_val = skin_Histogram.at<float>(gbin,rbin);
}; 

nrgb 是我的形象,我试图为此获取 skin_hist_value。但是 gbin 和 rbin 可能计算错误,并且在涉及到时会引发异常(我在数组之外运行?)

skin_Histogram.at<float>(gbin,rbin);

我完全不知道如何正确计算它。有什么帮助吗?

4

0 回答 0