利用inRange函数分割绿幕背景图片
在HSV色彩空间下比较容易分离不同的颜色
1.首先将原图片变为HSV色彩空间下
2.然后利用inRange函数分离前景背景,获得mask掩膜
3.利用copyTo函数和mask将前景图片分离出来
void QuickDemo::inrange_demo(Mat &image) {
Mat hsv;
cvtColor(image, hsv, COLOR_BGR2HSV);//在HSV空间可以较容易提取颜色
Mat mask;
inRange(hsv, Scalar(35, 43, 46), Scalar(77, 255, 255), mask);//inRange()函数将背景绿幕和前景分离。背景像素为255,前景人像为0
Mat redback = Mat::zeros(image.size(), image.type());
redback = Scalar(40, 40, 200);
bitwise_not(mask, mask);//将mask中人像部分变为255白色
imshow("mask", mask);
image.copyTo(redback, mask);//原图像image利用copyTo函数中的mask是指将mask中不为0的部分复制过来,为0部分不要
imshow("roi区域提取", redback);
}