点击上方蓝字关注我们

微信公众号:OpenCV学堂

关注获取更多计算机视觉与深度学习知识

问题来由

这个问题是谁问我的我已经不记得了,刚开始的时候他发了这张图像给我,让我给他看一下,我当时告诉他转换一下色彩空间提取就好啦,后来我记得他在微信上有问了我一次,今天我整理文件看到这张图又想起了,感觉他问了我好几次我都没回复挺不意思的,但是我实在不知道他是谁了,微信上消息太多,早已经把他淹没了,加之我记忆力退化严重,思来想去只好写篇文章告诉他,我回答了!如果看完感觉对你也有用,点在看支持即可!

先看看他发我的图像文件吧

在来说说他的需求:

找到途中全部青色的区域,检测出来,绘制中心点!他用霍夫变换,结果直接翻车了,原因其实我很理解,这个图有很多梯度干扰,噪声干扰,用了肯定翻车!然后他就问我怎么办?

解题思路

直接转换到HSV色彩空间,得到如下结果:

然后我选择5x5的开操作,完成之后得到

使用OpenCV轮廓发现,对轮廓拟合圆,求的圆心坐标得到输出结果如下:

怎么样,效果好吗?

代码实现

上述步骤的代码演示,主要分为如下步骤

1.加载图像并转换到HSV色彩空间,得到mask
2.根据mask二值图像,进行形体学处理
3.使用轮廓发现,找到所有最外层轮廓
4.对轮廓进行圆拟合,得到圆心与半径,然后绘制

 代码如下:

 1#include  2#include  3 4using namespace cv; 5using namespace std; 6 7int main(int argc, char** argv) { 8    Mat image = imread("D:/images/zsxq/zsxq_20.png"); 9    imshow("input", image);1011    // 色彩空间转换12    Mat hsv, mask;13    cvtColor(image, hsv, COLOR_BGR2HSV);14    inRange(hsv, Scalar(40,43, 46), Scalar(50, 255, 255), mask);15    imshow("mask", mask);16    imwrite("D:/mask.png", mask);1718    // 形态学开操作19    Mat se = getStructuringElement(MORPH_RECT, Size(5, 5), Point(-1, -1));20    morphologyEx(mask, mask, MORPH_OPEN, se);21    imshow("binary", mask);22    imwrite("D:/binary.png", mask);2324    // 轮廓发现25    vector<vector> contours;26    vector hiearchy;27    findContours(mask, contours, hiearchy, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);28    for (int i = 0; i 29        // 圆拟合30        RotatedRect rrt = fitEllipse(contours[i]);31        Point ct = rrt.center;32        int h = rrt.size.height;33        int w = rrt.size.width;34        printf("height : %d, width : %d \n", h, w);35        circle(image, ct, 2, Scalar(0, 0, 255), 2, 8);36        circle(image, ct, (h + w) / 4, Scalar(255, 0, 0), 2, 8, 0);37    }3839    // 显示输出40    imshow("result", image);41    imwrite("D:/result.png", image);42    waitKey(0);43    return 0;44}45

希望他会看到,如果看到给我留言知道一下!最后跟大家道歉一下,代码超过20行了@_@!!!!

天下难事,必作于易

天下大事,必作于细

 推荐阅读 

OpenCV4系统化学习路线图-视频版本!

OpenCV单应性矩阵发现参数估算方法详解

单应性矩阵应用-基于特征的图像拼接

OpenCV图像拼接改进算法之完美拼接

OpenCV | 二值图像分析的技巧都在这里

OpenCV二值图像分析之形态学应用技巧

图像色彩空间与应用转换

五分钟学会C++高效图表绘制神器调用

没想到图像直方图有这么多应用场景

基于灰度共生矩阵(GLCM)的图像纹理分析与提取

OpenCV中一个最容易搞错的形态学操作

OpenCV实现皮肤表面粗糙度3D显示

解密 | OpenCV加载图像大小是有限制的 ?

空间皮肤代码_不废话,看我20行代码搞定色块提取与定位…….相关推荐

  1. 人脸检测算法代码python_Python有多强大!20行代码实现人脸检测与识别

    题记:大二的时候发现人生苦短,所以信了拍神,开始学Python.学了大半年之后成功转行做前端了.来写个教程帮助大家入门Python. Python优点 Python是一种简单易学.功能强大的编程语言, ...

  2. python有趣的简单代码_简单几步,100行代码用Python画一个蝙蝠侠的logo

    转自:菜鸟学Python 蝙蝠侠作为DC漫画的核心人物之一,一直都受到广大粉丝的喜爱,而笔者作为DC的铁杆粉丝,自然也是老爷(粉丝对蝙蝠侠的昵称)的支持者.今天,笔者就用Python来画一个蝙蝠侠的l ...

  3. java300行程序代码_神级程序员JavaScript300行代码搞定汉字转拼音

    一.汉字转拼音的现状 首先应该说,汉字转拼音是个强需求,比如联系人按拼音字母排序/筛选:比如目的地(典型如机票购买) 按拼音首字母分类等等.但是这个需求的解决方案,但好像没听过什么巧妙的实现(特别是浏 ...

  4. python画画100行代码_简单几步,100行代码用Python画一个蝙蝠侠的logo

    原标题:简单几步,100行代码用Python画一个蝙蝠侠的logo 转自:菜鸟学Python 蝙蝠侠作为DC漫画的核心人物之一,一直都受到广大粉丝的喜爱,而笔者作为DC的铁杆粉丝,自然也是老爷(粉丝对 ...

  5. python实现人脸识别代码_手把手教你用1行代码实现人脸识别——Python Face_recogni...

    摘要: 1行代码实现人脸识别,1. 首先你需要提供一个文件夹,里面是所有你希望系统认识的人的图片.其中每个人一张图片,图片以人的名字命名.2. 接下来,你需要准备另一个文件夹,里面是你要识别的图片.3 ...

  6. java漏斗代码_集算示例:10 行代码解决漏斗转换计算

    销售过程是一个多环节的过程,哪个步骤有了过大瑕疵,都会导致业绩急剧下滑.而诊断出哪个步骤有瑕疵,除了无形的经验,还有量化的诊断方式,就是今天要讨论的主角:转化漏斗模型. 示例数据 为了详细讨论这个漏斗 ...

  7. 人脸识别的python实现代码_手把手教你用1行代码实现人脸识别 --Python Face_recognition...

    # filename : digital_makeup.py # -*- coding: utf-8 -*- # 导入pil模块 ,可用命令安装 apt-get install python-Imag ...

  8. 《看聊天记录都学不会C语言?太菜了吧》(14)这么神奇?我写了20行代码竟然一行就可以搞定?

    好消息2020年4月13日晚7.30我在CSDN开播,等你来聊天 预约连接:https://live.csdn.net/room/A757291228/MJWK0Gem 本系列文章将会以通俗易懂的对话 ...

  9. 20行代码爬取王者荣耀全英雄皮肤!让你享受白嫖的快乐!

    引言 王者荣耀大家都玩过吧,没玩过的也应该听说过,作为时下最火的手机MOBA游戏,咳咳,好像跑题了.我们今天的重点是爬取王者荣耀所有英雄的所有皮肤,而且仅仅使用20行代码即可完成. 准备工作 爬取皮肤 ...

最新文章

  1. mysql社区版与cluster 区别_MySQL版本Enterprise/Community/Cluster等版本的区别
  2. 域名买了,DNS解析怎么选?一键按需定制解析服务不是梦!
  3. jenkins 中 Poll SCM 和 Build periodically 的区别
  4. linux socket 时间,Socket编程获取服务器时间
  5. 十二、linux GPIO初始化
  6. java 子类必须实现_Java学习之接口的子类必须实现接口的全部方法吗?
  7. 在access窗体中加图片_如何在Access窗体中显示指定路径的图片
  8. 浅谈Linux用户权限管理之三(文件与权限的设定)
  9. 微信开发者工具显示切后台按钮
  10. 《信息化项目文档模板一——项目需求说明书》
  11. ansible远程在Windows server 2012 R2 安装vcredist(2008 2010 2012 2013)
  12. html验证码 按住向右滑动,js实现滑动滑块验证登录
  13. 戴尔笔记本电脑 N4010 14R-468 BOIS简单解析
  14. 高通平台添加自己的product后com.qualcomm.qti.tetherservice不停crash
  15. SQL Server数据定义——模式与基本表操作
  16. 红帽Linux多点触摸,Linux系统实现多点触摸
  17. 随身WIFI刷入debian
  18. 百度引流软文怎么写?如何利用软文从百度引流?
  19. 初学者Arcgis教程大全
  20. Mac环境下简化ssh连接vlab口令实现免密登录(UNSW)

热门文章

  1. 《Spring Recipes》第二章笔记:Creating Beans by Invokin...
  2. [转]C++中sizeof(struct)怎么计算?
  3. centos 本地化配置
  4. QQ2007 Beta2 下载地址泄露
  5. 技术开发(委托)合同怎么写?
  6. 14.JAVA整型变量
  7. python爬虫的用途_python爬虫用途
  8. 杨辉三角python_Python面试150题汇总,都是常问的面试题!
  9. 绿色背景配什么颜色文字_灰色裤子配什么颜色上衣好看
  10. [转载] java 枚举Enum源码解析