知识点
-RGB色彩空间
-Hsv色彩空间
-YUV色彩空间
-YCrCb色彩空间
API知识点
-色彩空间转换cvtColor
-提取指定色彩范围区域inRange
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);--
• hsv是输入的 HSV 格式的图像。
• Scalar(35, 43, 46)是颜色范围的下限。这里分别对应 H(色相)、S(饱和度)、V(明度)三个通道的值。
• Scalar(77, 255, 255)是颜色范围的上限。同样对应 H、S、V 三个通道。
• mask是输出的二值图像,即掩码。在这个掩码图像中,像素值只有 0(黑色)和 255(白色)。如果输入图像中某个像素的 HSV 值在给定的上下限范围内,那么在掩码图像中对应位置的像素值为 255(白色),否则为 0(黑色)。
namedWindow("通道混合", WINDOW_FREERATIO);
imshow("通道混合",mask);
}
void QUickdemo::inrange_demo(Mat& image)
{
Mat hsv;
cvtColor(image, hsv, COLOR_BGR2HSV);
Mat mask;
inRange(hsv, Scalar(35,43,46), Scalar(77,255,255), mask);
namedWindow("通道混合", WINDOW_FREERATIO);
imshow("通道混合",mask);
Mat redback = Mat::zeros(image.size(), image.type());
redback = Scalar(40,40,200);
bitwise_not(mask, mask);
imshow("mask", mask);
image.copyTo(redback, mask);
imshow("roi区域提取", redback);
}