根据颜色范围创建遮罩

时间:2020-10-20 09:29:06

标签: c++ opencv

我正在尝试在图片中风力涡轮机。为了简化此操作,我尝试删除一些基本的颜色(天空为蓝色,地面为绿色)的背景。但是看来我的面具总是全黑的。我在做什么错了?

亲切的问候

Mat HSV, mask, outputHSV;
    // Convert from BGR to HSV colorspace
    cv::cvtColor(frame,HSV, COLOR_BGR2HSV);

    int low_H = 220, low_S = 60, low_V = 90;
    int high_H = 240, high_S = 100, high_V = 100;

    // Detect the object based on HSV Range Values
    inRange(HSV, Scalar(low_H, low_S, low_V), Scalar(high_H, high_S, high_V), mask);

    // creating an inverted mask to segment out the cloth from the frame
    bitwise_and(frame,HSV,outputHSV,mask = mask);
    cv::imshow("HSV_filter", outputHSV);

1 个答案:

答案 0 :(得分:1)

您不需要设置v通道的阈值。只需玩色相和饱和度 HSV颜色空间使用三个值表示颜色

色调:此通道编码颜色信息。色调可以认为是0度对应于红色,120度对应于绿色,240度对应于蓝色的角度。

饱和度:此通道编码颜色的强度/纯度。例如,粉红色的饱和度不如红色。

值:此通道编码颜色的亮度。图像的阴影和光泽分量会出现在此通道中。

int low_H = 220, low_S = 60, low_V = 0;
int high_H = 240, high_S = 100, high_V = 255;