图像处理开发需求、图像处理接私活挣零花钱,请加微信/QQ 2487872782
图像处理开发资料、图像处理技术交流请加QQ群,群号 271891601

在实际应用场景中,我们遇到的图像一般是真彩色图像,即要检测的目标带有颜色信息,所以有必要知道如何利用目标的颜色信息来对目标进行检测。

在对图像的颜色进行处理时,RGB通道并不能很好地反映出物体具有的颜色信息,所以通常选取HSV颜色空间进行处理,在OpenCV的HSV空间中,H通道为色度通道,取值范围为0到180,S和V和饱和度与亮度通道,取值范围为0到255。比如红色在HSV颜色空间中的色度范围为0~10和160~180.

在这里,我给大家提供一个取色和调色小工具,这个小工具支持HSV空间的取色哦!不过不管是这个小工具还是PS中,H的范围都是0~360,S的范围是0到百分之百,V的范围也是0到百度分之百,这个也和百科上的解释是一致的。所以你在具体使用的时候要按比例转化一下哦!比如车牌蓝在标准HSV中是(225,100%,81%)那么转换到OpenCV中就是(225/360*180,255*100%,255*81%)!

下载链接:取色调色空具(支持HSV空间).rar_免费高速下载|百度网盘-分享无限制

软件的截图如下:

下面上代码,代码中用到的图像的下载链接为:circle.jpg_免费高速下载|百度网盘-分享无限制

本博文提供的代码的思路是:先对输入图像进行HSV通道转换,然后利用红色的色度范围设置高、低阈值,从而检测原图中红色的大圆与小圆。高、低阈值处理后各得到一个图像,将这两张图像合并后进行高斯滤波处理,完了之后再利用霍夫变换中的圆检测技术进行圆形区域提取。

//OpenCV版本3.0.0
//图像处理开发需求、图像处理接私活挣零花钱,请加微信/QQ 2487872782
//图像处理开发资料、图像处理技术交流请加QQ群,群号 271891601#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <string>
#include <vector>
int main()
{cv::Mat srcImage = cv::imread("circle.jpg");if (!srcImage.data)return -1;cv::imshow("srcImage", srcImage);cv::Mat resultImage = srcImage.clone();// 中值滤波cv::medianBlur(srcImage, srcImage, 3);// 转换成hsv颜色空间cv::Mat hsvImage;cv::cvtColor(srcImage, hsvImage, cv::COLOR_BGR2HSV);cv::imshow("hsvImage", hsvImage);// 颜色阈值化处理cv::Mat lowTempMat;cv::Mat upperTempMat;// 低阈值限定cv::inRange(hsvImage, cv::Scalar(0, 100, 100), cv::Scalar(10, 255, 255), lowTempMat);// 高阈值限定cv::inRange(hsvImage, cv::Scalar(160, 100, 100),cv::Scalar(179, 255, 255), upperTempMat);cv::imshow("lowTempMat", lowTempMat);cv::imshow("upperTempMat", upperTempMat);// 颜色阈值限定合并cv::Mat redTempMat;cv::addWeighted(lowTempMat, 1.0, upperTempMat, 1.0, 0.0, redTempMat);// 高斯平滑cv::GaussianBlur(redTempMat, redTempMat, cv::Size(9, 9), 2, 2);// 霍夫变换std::vector<cv::Vec3f> circles;cv::HoughCircles(redTempMat, circles, CV_HOUGH_GRADIENT,1, redTempMat.rows / 8, 100, 20, 0, 0);// 颜色圆检测结果判断if (circles.size() == 0) return 1;for (int i = 0; i < circles.size(); ++i){// 绘制检测到颜色圆cv::Point center(cvRound(circles[i][0]), cvRound(circles[i][1]));int radius = cvRound(circles[i][2]);cv::circle(resultImage, center, radius, cv::Scalar(0, 255, 0), 5);}cv::imshow("resultImage", resultImage);cv::waitKey(0);return 0;
}

运行结果如下图所示:

这里说明上面右上的图为什么是那样?那是因为在BGR空间中显然的HSV格式的图!

图像处理开发需求、图像处理接私活挣零花钱,请加微信/QQ 2487872782
图像处理开发资料、图像处理技术交流请加QQ群,群号 271891601

通过圆的颜色并结合霍夫变换检测目标圆的OpenCV代码相关推荐

  1. 利用霍夫变换做直线检测的原理及OpenCV代码实现

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 霍夫变换的原理大家可以参考博文 霍夫变换_tie ...

  2. 霍夫变换检测直线 c语言,opencv之霍夫变换直线检测

    霍夫变换检测 霍夫变换之直线检测霍夫变换直线检测 前提条件-边缘检测已经完成 平面空间到极坐标空间的转换(空间域向霍夫域的转换) 检测原理两点确定一条直线,通过一点可以确定无数条直线,极坐标直线公式 ...

  3. 基于python+opencv利用颜色,区分多个目标(附带详细代码)

    效果图 先上个效果图: 视频可能看不清,解释一下:就是通过hsv色彩空间将蓝色和红色同时识别出来,并且区分它们,画出标志标出坐标. 说明 本实验仅适用于基于色彩的识别与区分,比如多种颜色的小球的识别与 ...

  4. 利用霍夫梯度法进行圆检测的原理概要及OpenCV代码实现

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 霍夫圆变换的基本原理与霍夫线变换原理类似,对直线 ...

  5. Hough Transform 霍夫变换检测直线

    Hough Transform 霍夫变换检测直线 从理论到代码,再从代码到理论 (1)理论之通俗理解: 1.在图像中检测直线的问题,其实质是找到构成直线的所有的像素点.那么问题就是从找到直线,变成找到 ...

  6. LSD快速直线检测的原理概要及OpenCV代码实现(CV类LineSegmentDetector)

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 LSD快速直线检测算法是由Rafael Grom ...

  7. Hough变换检测椭圆 附带matlab与opencv代码

     由椭圆的公式(1)可得,确定一个椭圆需要5个参数,a,b 为椭圆的长轴和段轴,P,Q 为椭圆中心坐标,θ为椭圆的旋转角度.如果用传统的Hough变换方法,参数空间需要五维.这种方法在计算过程中所耗费 ...

  8. opencv霍夫变换检测圆cvHoughCircles和直线cvHoughLines2的应用

    opencv霍夫变换检测圆cvHoughCircles和直线cvHoughLines2的应用 1)cvHonghLines2:直线 2)cvHoughCircles:该函数用Hough变换在二值图像中 ...

  9. 霍夫变换MATLAB怎么实现,做过Matlab关于霍夫变换检测圆的高手请进

    Hough变换对圆的检测 Hough变换的基本原理在于,利用点与线的对偶性,将图像空间的线条变为参数空间的聚集点,从而检测给定图像是否存在给定性质的曲线. Hough对圆的检测程序如下  完整的程序及 ...

最新文章

  1. 存在描述所有生命的方程吗?
  2. 十个隐藏_LOL手游:新版增加42个英雄,大白兔:10个隐藏T0角色
  3. LodRunner实现大负载测试的四部曲(配置系统参数、配置LR、修改脚本、设置组策略)...
  4. bzoj2067: [Poi2004]SZN
  5. 2.3.2便捷的电子邮件
  6. Java开发必看ORM概念大全
  7. jquery实现某宝放大点击切换
  8. C++虚调用及其调用的具体形式
  9. c语言50个小程序,C语言50小程序.doc
  10. 系统学习深度学习(十七)--VGG模型
  11. react 刨坑之路之使用create-react-app脚手架
  12. jieba 中文分词
  13. 编写业务逻辑代码-清晰可维护是很重要的
  14. 环比和同比的定义和应用
  15. (三)树莓派系列教程:树莓派4B上编写Python程序(C语言),并运行
  16. 利用一阶谓词逻辑求解猴子摘香蕉问题
  17. 058.克鲁斯卡尔(Kruskal)算法的原理以及解决最小生成树问题
  18. 启用 Windows 审核模式(Audit Mode),以 Administrator 账户来设置电脑的开箱体验
  19. 微博热词搜索并生成云词html(完整)
  20. 深入浅出再谈Unity内存泄漏

热门文章

  1. python 编程一日一练-Python一日一练02----诗词生成器
  2. python自动测试p-python自动化测试_8
  3. 开课吧python视频百度云-做摄影2年,工资5000,兼职2W...
  4. python培训费用-Python培训费用得多少?
  5. python基本语法-Python语法基础50题
  6. python难学嘛-终于明白0基础学python难吗
  7. python测试开发自学教程-python测试开发学习笔记
  8. 自学python还是报班-零基础学Python是应该报课还是自学?
  9. python编程培训-马哥教育官网-专业Linux培训班,Python培训机构
  10. 使用Cython库包对python的py文件(源码)进行加密,把python的.py文件生成.so文件并调用