HSV色彩空间对照表+inRange实现像素分离

一、概述

  概述:主要介绍一下HSV色彩空间对照表+inRange对颜色进行分离  

inRange(img,low,high),函式会将位于两个区域间的值置为255,位于区间外的值置为0

  HSV色彩空间对照表图:

 

  上面的图表使用如下:

    例如:过滤黄色像素[(26,43,46)(34,255,255)],ps:此处在真正使用的时候可以适当的把lower调的再小一点,把upper调整的再大一点,因为上表给出的是标准参考值,具体需要

根据开发中的实际情况而定。

    ps:下面会写一个小例子来验证上述结论

二、代码示例

Color_Separate_In_Range::Color_Separate_In_Range(QWidget *parent)
    : MyGraphicsView{parent}
{
    this->setWindowTitle("HSV+inRange实现色彩分离案例");
}


void Color_Separate_In_Range::dropEvent(QDropEvent *event){
    path = event->mimeData()->urls().at(0).toLocalFile();
    showColorSplit(path.toStdString().c_str());
}

void Color_Separate_In_Range::showColorSplit(const char *filePath){
    Mat src = imread(filePath);
    if(src.empty()){
        qDebug()<<"图片为空";
       return;
    }
    imshow("src",src);
    //将图片转HSV色彩空间
    Mat hsv;
    cvtColor(src,hsv,COLOR_BGR2HSV);
    Mat mask;//掩码遮罩
    //使用inRang过滤像素
    inRange(hsv,Scalar(15,30,32),Scalar(50,255,255),mask);
    imshow("result",mask);

    //执行形态学操作去除噪声
    Mat kernel = getStructuringElement(MORPH_RECT,Size(5,5),Point(-1,-1));
    morphologyEx(mask,mask,MORPH_OPEN,kernel,Point(-1,-1));
    imshow("morphologyEx",mask);

    //腐蚀

    dilate(mask,mask,kernel,Point(-1,-1),2);
    imshow("erode",mask);

    vector<vector<Point>> contours;
    vector<Vec4i> heri;

    //寻找最大外接矩形
    findContours(mask,contours,RETR_EXTERNAL,CHAIN_APPROX_SIMPLE);
    double maxArea = contourArea(contours[0]);
    int index = 0;
    for(size_t i = 0;i<contours.size();i++){
        double area = contourArea(contours[i]);
        if(maxArea<=area){
            maxArea = area;
            index = i;
        }
    }
    Rect rect = boundingRect(contours[index]);
    Rect rect2 = Rect(rect.x,rect.y,rect.width,rect.width);
    rectangle(src,rect2,Scalar(0,0,255),2,LINE_8);
    imshow("final Result",src);

    circle(src,Point(rect.x+rect.width/2,rect.y+rect.width/2),rect.width/2,Scalar(0,0,255),3,LINE_8);
    imshow("circle",src);


}

 

三、演示图像

 

posted on 2022-04-25 16:49  飘杨......  阅读(1130)  评论(0编辑  收藏  举报