从忽略背景的图像(而不是网络摄像头)中找到人的肤色百分比



我需要找到一个人在给定图像中的肤色百分比。

到目前为止,我已经能够用肤色计算所有像素,但我很难忽略这个人的背景,所以我可以计算百分比的像素数。

BackgroundSubtractorMOG2 bg;
bg.nmixtures =3;
bg.bShadowDetection=false;
bg.operator ()(img,fore);
bg.getBackgroundImage(back);

img是我的形象。我试图将back-mat对象和fore-mat对象分开,但在上面的代码片段中,backfore的值与img的值相同。什么都没发生。

你能告诉我正确的方向吗?我必须做出什么改变才能做到正确?

我能够运行一些类似的代码,在这里找到:

http://mateuszstankiewicz.eu/?p=189

我不得不更改一些内容,但它最终正常工作(前后显示时与img不同:

int main(int argc, char *argv[]) {
    Mat frame, back, fore;
    VideoCapture cap(0);
    BackgroundSubtractorMOG2 bg;
    vector<std::vector<Point> > contours;
    namedWindow("Frame");
    namedWindow("Background");
    namedWindow("Foreground");
    for(;;) {
        cap >> frame;
        bg.operator ()(frame, fore);
        bg.getBackgroundImage(back);
        erode(fore, fore, Mat());
        dilate(fore, fore, Mat());
        findContours(fore, contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);
        drawContours(frame, contours, -1, Scalar(0, 0, 255), 2);
        imshow("Frame", frame);
        imshow("Background", back);
        imshow("Foreground", fore);
        if(waitKey(1) == 27) break;
    }
    return 0;
}

相关内容

  • 没有找到相关文章

最新更新