私がやっていることは、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/
私の問題は、ヒスト値の座標を計算することにあります。
チュートリアルから:
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);
正確に計算する方法がまったくわかりません。何か助けはありますか?