void QuickDemo::inrange_demo(Mat &image) {
//将输入图像从BGR色彩空间转换到HSV色彩空间。这是因为在HSV空间中,基于颜色的图像分割更加简单和直观。
Mat hsv;
cvtColor(image, hsv, COLOR_BGR2HSV);
//通过inRange函数定义绿色的HSV范围,并生成一个二值掩码(mask),其中绿色区域为白色(值为255),非绿色区域为黑色(值为0)。
Mat mask;
inRange(hsv, Scalar(35, 43, 46), Scalar(77, 255, 255), mask);
imshow("mask1", mask);
//创建一个与原图同样大小和类型的纯红色背景图像redback。
Mat redback = Mat::zeros(image.size(), image.type());
redback = Scalar(40, 40, 200);// 红色背景
//使用bitwise_not函数反转掩码,使得原来的绿色区域变为黑色(0),非绿色区域变为白色(255)。
bitwise_not(mask, mask);
imshow("mask2", mask);
image.copyTo(redback, mask);
imshow("roi", redback);
}
使用OpenCV在C++中提取图像的ROI并将绿色背景更换成红色背景
![](https://img-home.csdnimg.cn/images/20240711042549.png)