ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

OpenCV颜色提取,轮廓识别

2021-10-24 14:00:47  阅读:415  来源: 互联网

标签:识别 img yellow OpenCV Scalar 轮廓 red 255


基础知识

HSV图像

注意如果用8U来存HSV图像,H的范围是0~180,S、V的范围是都是0~255

H坐标颜色对应

红0

黄30

绿60

青90

蓝120

紫150

大概上下浮动10左右可以提取某一种颜色

调完颜色参数之后调S(饱和度参数),最后再调亮度参数

使用OpenCV的inrange函数,可以快速进行颜色提取

轮廓识别

直接使用findContours函数

findContours(Mat binImg, vector<vector<Point>> contours, vector<Vec4i> hierarchy, int mode, int method, Point offset = Point())
binImg:输入二值化图像
contours:轮廓点集
hierarchy:拓扑结构
mode:轮廓返回模式
RETR_TREE:返回所有轮廓和拓扑结构
RETR_EXTERNAL:只返回最外层轮廓
RETR_LIST:返回所有轮廓但不建立拓扑结构
method:轮廓发现方法,常用CHAIN_APPROX_SIMPLE

再新建一个矩阵来把提取出来的轮廓画出来

使用drawContours函数即可

drawContours(binImg, contours, contourIdx, color, thickness, lineType, hierarchy, maxlevel, offset)

代码

#include<opencv2/opencv.hpp>
#include<vector>
using namespace cv;
using namespace std;
vector<vector<Point> > pt;
int main(){
    Mat img=imread("../2021-03-23 222039.jpg");
    namedWindow("img",0);imshow("img",img);
    cvtColor(img,img,COLOR_BGR2HSV);
    GaussianBlur(img,img,Size(5,5),3);
    Mat yellow,blue,red;
    inRange(img,Scalar(20,130,0),Scalar(35,255,255),yellow);
    inRange(img,Scalar(110,90,100),Scalar(130,255,255),blue);
    inRange(img,Scalar(0,95,0),Scalar(10,255,255),red);
    namedWindow("yellow",0);imshow("yellow",yellow);
    namedWindow("blue",0);imshow("blue",blue);
    namedWindow("red",0);imshow("red",red);
    findContours(yellow,pt,RETR_EXTERNAL,CHAIN_APPROX_SIMPLE);
    Mat con(img.size(),CV_8UC3);
    drawContours(con,pt,-1,Scalar(255,255,255),5);
    namedWindow("con",0);imshow("con",con);
    waitKey(0);
    return 0;
}

效果

 

 

标签:识别,img,yellow,OpenCV,Scalar,轮廓,red,255
来源: https://blog.csdn.net/C20180602_csq/article/details/120933095

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有