opencv如何识别图片上带颜色的圆
更新时间:2020年4月25日 17:25 点击:1382
本文实例为大家分享了opencv识别图片上带颜色的圆的具体代码,供大家参考,具体内容如下
识别带颜色的圆,首先需要先查询该颜色的HSV值,下图部分紫色归为红色了:
比如红色:
//红色的HSV值 int low_H = 0,low_S = 123,low_V = 100; int High_H = 5,High_S = 255,High_V = 255;
然后将图片从BGR转化成HSV,接着二值化:
cvtColor(image,src,COLOR_BGR2HSV); //从BGR-> HSV inRange(src,Scalar(low_H,low_S,low_V),Scalar(High_H,High_S,High_V),src); //二值化
如果有噪声可以去噪(这一步可以没有):
GaussianBlur(src,src,Size(5,3 ),2,2);
接着用HoughCircles来找圆,后面的参数可以根据需要自己设置:
HoughCircles(src,circles,CV_HOUGH_GRADIENT,1,50,15,7,10,30); //找圆,最后两个参数是圆半径范围,20是最小圆半径,30是最大圆半径
HoughCircles介绍:
HoughCircles(image,method,dp,minDist [,circles [,param1 [,param2 [,minRadius [,maxRadius]]]]])
完整代码:
#include <iostream> #include <vector> #include <limits> #include <opencv2/opencv.hpp> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <string> #include <math.h> #include <iomanip> #include <cstdio> #pragma comment (lib, "opencv_core2413d.lib") #pragma comment (lib, "opencv_highgui2413d.lib") #pragma comment (lib, "opencv_imgproc2413d.lib") #pragma comment (lib, "opencv_video2413d.lib") #pragma comment (lib, "opencv_features2d2413d.lib") using namespace std; using namespace cv; void drawCircle(Mat &input, const vector<Vec3f> &circles); int main(){ Mat image, src;//加载进来的图片 vector<Vec3f> circles;//识别出来的圆,每一行是一个圆,第一列是圆心的x坐标,第二列是圆心的y坐标,第三列是圆的半径 image = imread("D:/code/map3.png"); Mat result = imread("D:/code/map3.png");//结果图 //红色的HSV值 int low_H = 0,low_S = 123,low_V = 100; int High_H = 5,High_S = 255,High_V = 255; cvtColor(image, src, COLOR_BGR2HSV);//从BGR->HSV inRange(src, Scalar(low_H, low_S, low_V), Scalar(High_H, High_S, High_V), src);//二值化 //Reduce the noise so we avoid false circle detection GaussianBlur(src, src, Size(5, 3), 2, 2); HoughCircles(src, circles, CV_HOUGH_GRADIENT, 1, 50, 15, 7,10,30);//找圆,最后两个参数是圆半径范围,20是最小圆半径,30是最大圆半径 drawCircle(result, circles);//画圆 namedWindow("Display window1", WINDOW_NORMAL);//展示结果 namedWindow("Display window2", WINDOW_NORMAL); resizeWindow("Display window1", 1240, 680); resizeWindow("Display window2", 1240, 680); imshow("Display window1", image); imshow("Display window2", result); waitKey(0); return 0; } void drawCircle(Mat &input, const vector<Vec3f> &circles){ for (int i = 0; i<circles.size(); i++){ Point center(cvRound(circles[i][0]), cvRound(circles[i][1])); int radius = cvRound(circles[i][2]); circle(input, center, radius, Scalar(255, 0, 0), 3, 8, 0); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持猪先飞。
上一篇: C语言中传值与传指针的介绍与区别
下一篇: c++中创建.in文件的方法步骤
相关文章
- 这篇文章主要介绍了python-opencv-画外接矩形框的实例代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-09-04
- 图片剪裁是常用的方法,那么如何通过4坐标剪裁图片,本文就详细的来介绍一下,感兴趣的小伙伴们可以参考一下...2021-06-04
- 这篇文章主要介绍了OpenCV如何去除图片中的阴影的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-29
- 这篇文章主要介绍了解决使用OpenCV中的imread()内存报错问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
- 这篇文章主要介绍了python OpenCV的相关资料,帮助大家更好的理解和学习使用python的opencv,感兴趣的朋友可以了解下...2021-03-31
- 这篇文章主要介绍了使用OpenCV去除面积较小的连通域,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-05
详解pycharm的python包opencv(cv2)无代码提示问题的解决
这篇文章主要介绍了详解pycharm的python包opencv(cv2)无代码提示问题的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-29在C#中使用OpenCV(使用OpenCVSharp)的实现
这篇文章主要介绍了在C#中使用OpenCV(使用OpenCVSharp)的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-15- 这篇文章主要为大家详细介绍了C++ opencv实现车道线识别,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-20
详解opencv中画圆circle函数和椭圆ellipse函数
这篇文章主要介绍了opencv中画圆circle函数和椭圆ellipse函数,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...2020-05-09- 凸包是一个计算几何中的概念,在图像处理过程中,我们常常需要寻找图像中包围某个物体的凸包,本文就使用OpenCV实现,感兴趣的可以了解一下...2021-06-08
python中的opencv和PIL(pillow)转化操作
这篇文章主要介绍了python中的opencv和PIL(pillow)转化操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16- 这篇文章主要为大家详细介绍了Opencv LBPH人脸识别算法的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-04-25
- 这篇文章主要介绍了python基于OpenCV模板匹配识别图片中的数字,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下...2021-03-31
- 这篇文章主要介绍了python基于opencv检测程序运行效率,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-05-09
浅谈OpenCV中的新函数connectedComponentsWithStats用法
这篇文章主要介绍了浅谈OpenCV中的新函数connectedComponentsWithStats用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-05- 这篇文章主要为大家详细介绍了Opencv实现绿幕视频背景替换功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-04-25
- 这篇文章主要介绍了Opencv图像处理之详解掩膜mask,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-21
- 这篇文章主要介绍了使用opencv识别图像红色区域,并输出红色区域中心点坐标,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-03
- 今天小编就为大家分享一篇python-OpenCV 实现将数组转换成灰度图和彩图,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-27