OpenCV-像素的图像直方图值

OpenCV-像素的图像直方图值,opencv,histogram,skin,Opencv,Histogram,Skin,我正在做的是尝试在OpenCV中实现一个用于皮肤检测的皮肤概率映射算法 我一直停留在一个地方,根据和本教程,我应该将每个像素的SkinHistValue/非SkinHistValue概率与θ阈值进行比较 我的问题在于计算hist值的坐标: 在本教程中: calcHist(&nRGB_frame,1,channels,mask,skin_Histogram,2,histSize,ranges,uniform,accumulate); calcHist(&nRGB_frame,1,c

我正在做的是尝试在OpenCV中实现一个用于皮肤检测的皮肤概率映射算法

我一直停留在一个地方,根据和本教程,我应该将每个像素的SkinHistValue/非SkinHistValue概率与θ阈值进行比较

我的问题在于计算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是我的图像,我正试图得到它的皮肤历史值。但gbin和rbin可能计算错误,它抛出了一个我在数组外部运行的异常?说到

skin_Histogram.at<float>(gbin,rbin);
我完全不知道如何正确地计算它。有什么帮助吗