opencv3.1 提取图像中某一像素点的HSV值并判断颜色

相关学习资料:

https://blog.youkuaiyun.com/taily_duan/article/details/51506776【OpenCV】HSV颜色识别-HSV基本颜色分量范围

https://blog.youkuaiyun.com/qq_15947787/article/details/72784253【opencv】目标识别——HSV颜色识别

https://blog.youkuaiyun.com/guyuealian/article/details/77981619OpenCV获取图像某点的颜色值,并设置某点的颜色

https://blog.youkuaiyun.com/weijifen000/article/details/84203136利用OpenCV获取图片上某一点的颜色HSV值

https://blog.youkuaiyun.com/clp786080772/article/details/51913158Opencv颜色识别

https://www.jianshu.com/p/bb3b316d6936简单颜色识别并跟踪

https://blog.youkuaiyun.com/qq78442761/article/details/83056346OpenCV识别指定颜色(黑、灰、白、红、橙、黄、绿、青、蓝、紫)

https://blog.youkuaiyun.com/bjbz_cxy/article/details/79712074使用Opencv获取每个像素点的RGB颜色分量/HSV颜色分量

 

判断颜色时H、S、V的上下区间值(if语句中的取值范围)需要根据实际需要调整,matHsv是HSV格式的图像

            vector<int> colorVec;
            colorVec.push_back(matHsv.at<Vec3b>(rows,cols)[0]);
            colorVec.push_back(matHsv.at<Vec3b>(rows,cols)[1]);
            colorVec.push_back(matHsv.at<Vec3b>(rows,cols)[2]);
           if((colorVec[0]>=174&&colorVec[0]<=180)&&(colorVec[1]>=236&&colorVec[1]<=242)&&(colorVec[2]>=238&&colorVec[2]<=244)){
               //cout<<colorVec[0]<<","<<colorVec[1]<<","<<colorVec[2]<<endl;
               //return 'R';
                cout<<"red"<<endl;
            }
            else if((colorVec[0]>=57&&colorVec[0]<=63)&&(colorVec[1]>=239&&colorVec[1]<=245)&&(colorVec[2]>=232&&colorVec[2]<=238)){
               //return 'G';
                cout<<"green"<<endl;
            }
            else{
                cout<<"other"<<endl;
            }

下面是在一段视频中截取某一帧,将其特定像素的HSV作为颜色判断参考值的代码

    VideoCapture capture;
    capture.open( "/home/wfl/Desktop/test/record.mp4"  );
    Mat image;
    Mat matHsv;    
    long frameToStart =7970;
    capture.set( CV_CAP_PROP_POS_FRAMES, frameToStart );
    capture>>image;
    cvtColor(image,matHsv,COLOR_BGR2HSV);//RGB转HSV
    cout<<"G:"<<static_cast<int>(matHsv.at<Vec3b>(30,1325)[0])<<","<<static_cast<int>(matHsv.at<Vec3b>(30,1325)[1])<<","<<static_cast<int>(matHsv.at<Vec3b>(30,1325)[2])<<endl;
    cout<<"R:"<<static_cast<int>(matHsv.at<Vec3b>(27,1444)[0])<<","<<static_cast<int>(matHsv.at<Vec3b>(27,1444)[1])<<","<<static_cast<int>(matHsv.at<Vec3b>(27,1444)[2])<<endl;
    imshow("image",image);
    waitKey();

H:  0 — 180

S:  0 — 255

V:  0 — 255

在HSV空间各种颜色的范围

图片来自https://blog.youkuaiyun.com/taily_duan/article/details/51506776

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值