0

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

到目前为止,我已经能够计算所有具有肤色的像素,但我无法忽略人的背景,因此我可以计算百分比的像素数。

BackgroundSubtractorMOG2 bg;
bg.nmixtures =3;
bg.bShadowDetection=false;

bg.operator ()(img,fore);
bg.getBackgroundImage(back);

img是我的形象。我试图分离前后垫对象,但使用上面的代码片段backfore采用与img. 什么都没有发生。

你能指出我必须做出哪些改变才能正确的方向吗?

4

1 回答 1

0

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

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;
}
于 2013-02-14T14:49:28.430 回答