使用OpenCV在C++中提取图像的ROI并将绿色背景更换成红色背景

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并将绿色背景更换成红色背景_第1张图片

你可能感兴趣的:(opencv,opencv,c++,人工智能)