我正在做的是尝试在 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);
我完全不知道如何正确计算它。有什么帮助吗?