我需要找到一个人在给定图像中的肤色百分比。
到目前为止,我已经能够用肤色计算所有像素,但我很难忽略这个人的背景,所以我可以计算百分比的像素数。
BackgroundSubtractorMOG2 bg;
bg.nmixtures =3;
bg.bShadowDetection=false;
bg.operator ()(img,fore);
bg.getBackgroundImage(back);
img
是我的形象。我试图将back-mat对象和fore-mat对象分开,但在上面的代码片段中,back
和fore
的值与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;
}