1. 预处理

1.1 双边滤波

img.SmoothBilatral(int val1,int val2,int,val3)

(原图)

(双边滤波)

(高斯滤波)

高斯滤波将整张图都变得模糊了,双边滤波则保留了清晰轮廓特征,效果比较好。

1.2 灰度并二值

  img.Convert<Gray, byte>()//灰度化g   

(灰度图)

ThresholdBinary(new Gray(Parameters.BinVal),new Gray(255));//二值化

(二值图)

2. 指针提取

1.1 帧差法提取指针

用当前帧减去上一帧得到运动的指针图像。

    private Image<Gray,byte> SubBackground(Image<Gray,byte>pic){Image<Gray, byte> gray = new Image<Gray, byte>(pic.Size);if (tag == 0){Subbg[0] = pic;//背景帧(上一帧)tag = 1;return Subbg[0];}else{Subbg[1] = pic;gray = Subbg[1] - Subbg[0];//当前帧减去背景帧(上一帧)Subbg[0] = Subbg[1];}return gray;}

(指针)

2.2 霍夫圆检测

对灰度图进行霍夫圆检测。

    private Image<Bgr, byte> CirclePic(Image<Gray, byte> pic){Image<Bgr, byte> outpic = new Image<Bgr, byte>(pic.Size);//霍夫圆检测CircleF[] circle = CvInvoke.HoughCircles(pic, Emgu.CV.CvEnum.HoughType.Gradient, 10, 1000);foreach (CircleF c in circle){CvInvoke.Circle(outpic, new Point((int)c.Center.X, (int)c.Center.Y), (int)c.Radius, new MCvScalar(255, 255, 0), 5);center.X = (int)c.Center.X;center.Y = (int)c.Center.Y;radius = c.Radius;outpic.Draw(new CircleF(new PointF(center.X, center.Y), 5), new Bgr(255, 0, 255), 10);outpic.Draw(new LineSegment2D(new Point(0, center.Y), new Point(pic.Width, center.Y)), new Bgr(Color.Blue), 2);outpic.Draw(new LineSegment2D(new Point(center.X, 0), new Point(center.X, pic.Height)), new Bgr(Color.Blue), 2);outpic.Draw(new Point(center.X, center.Y).ToString(), new Point(center.X,center.Y), Emgu.CV.CvEnum.FontFace.HersheyComplexSmall, 1, new Bgr(255, 0, 255));}return outpic;}

2.3 直线检测

对帧差法提取到的指针图像进行直线检测。

检测到的结果包含多条直线,首先对长度不符合的进行过滤(这里排除长度小于70的线段),过滤后仍然包含多条线段,但是我们只需要一条,所以进行直线合并,只保留一条。

    //返回直线端点的坐标public Point AvrPoint(Point[] point){Point outpoint = new Point(0, 0);int p_x = 0;int p_y = 0;int n = 0;foreach (Point p in point){if (p.X != 0 && p.Y != 0){p_x += p.X;p_y += p.Y;n++;}}if (n != 0){p_x = p_x / n;p_y = p_y / n;}outpoint = new Point(p_x, p_y);return outpoint;}

2.4 绘制指针

以圆心为指针的

一端,2.3中求得的线段端点为另一端绘制直线。并在同一张图片上绘制出圆心和圆(刻度盘)

【OpenCv/EmguCv】指针式仪表读数(一)相关推荐

  1. 毕业设计(四)-- 指针式仪表读数

    1  图像预处理   1.1  中值滤波 为了使输入图像更加清晰,需要对其进行去噪.在常用的去噪算法中,中值滤波可以很好的保留边缘信息同时去除噪点,中值滤波的原理是对矩阵中的像素值进行排序,并用序列中 ...

  2. 巡检机器人中的指针式仪表读数识别系统

    巡检机器人中的指针式仪表读数识别[MATLAB,GUI,语音] 摘要:巡检机器人能自动识别仪表设备的状态,先准确定位图像中的仪表设备,在此基础上,实现了仪表读数的自动识别. 摘要:巡检机器人能自动识别 ...

  3. 毕业设计-基于深度学习的指针式仪表读数识别系统

    目录 前言 课题背景和意义 实现技术思路 一.指针式仪表读数识别算法的设计 二.指针和刻度线提取及仪表示数识别 实现效果图样例 最后 前言

  4. C# OpenCV EmguCV LSD直线检测使用Demo

    点击下方卡片,关注"OpenCV与AI深度学习"公众号! 视觉/图像重磅干货,第一时间送达! LSD直线检测原理大家可以自行百度查询,这里给出EmguCV4.5.4使用Demo如下 ...

  5. vb.net opencv emgucv 图像识别基本功能合集

    更新(2021.10)统一回复:有一段时间没上csdn,发现最近还有挺多同志私信要该软件及源码,非常不好意思哈,以前可以大家发免费共享,但现在涉及到版权,整个软件和代码没法共享了!不过可以给你定制二次 ...

  6. C# OpenCV EmguCV实现扫描文本图像倾斜矫正 实现详解(附源码)

    一.扫描文本倾斜矫正 实现步骤可以参考如下链接: https://blog.csdn.net/stq054188/article/details/120031667?spm=1001.2014.300 ...

  7. 完整opencv(emgucv)人脸、检测、采集、识别、匹配、对比

    //成对几何直方图匹配               public static string MatchHist()                {           string haarXml ...

  8. Opencv EmguCv 基本识别步骤

    { //1.灰度化,竖向边缘检测 //2.自适应二值化处理 //3.形态学处理(膨胀和腐蚀) //4.轮廓查找与筛选 Image<Bgr, byte> simage = OriImage; ...

  9. 毕业设计-基于机器视觉的指针式仪表读数自动识别研究与实现

    目录 前言 课题背景和意义 实现技术思路 一.表盘区域定位算法 二.Mask R-CNN 网络模型分析 三.表盘区域定位算法改进与实现 实现效果图样例 最后 前言

最新文章

  1. react使用moment进行日期格式化
  2. 数字化转型升级,人才战略是核心
  3. centos7启动dhcp失败_4:Nginx服务启动、停止、重启
  4. c语言循环拆分成和,C语言拆分循环链表程序
  5. 服务器计时器、Windows 计时器和线程计时器
  6. linux把虚拟机上的文件共享,[转]windows中vmware虚拟机中的Linux如何进行文件的共享...
  7. python模式字符串_使用python进行字符串模式匹配
  8. java 多线程编程指南 pdf_Java-多线程编程
  9. 为Android系统定制重启功能
  10. MVC3+EF4.1学习系列(五)----- EF查找导航属性的几种方式
  11. cocoscreator3.x 用tiledMap趟坑
  12. Hbuilder中如何快速输入注释标签_三菱PLC编程软件如何使用注释、声明、注解?...
  13. 给加西亚的信》--如何做一名优秀员工
  14. (两百五十六)学习perfetto(一)
  15. Redhat8.4系统安装
  16. web前端开发工程师是做什么工作的?
  17. ubuntu网络无法连接
  18. Java实现简单的猜数字小游戏
  19. 前端table导出excel表格方法汇总
  20. 23种设计模式(GOF)

热门文章

  1. 爱普生L355打印机进纸故障排除
  2. 2014年国内餐饮O2O大事件
  3. MySQL执行成本是如何计算的?
  4. Microsoft Office PPT 编程(VBA)学习 (不定时更新,正在学习 ing)
  5. 5天学Python(1)——语言基础
  6. 气象灾害监测:如何利用大数据及安防AI技术进行预警?
  7. clamav安装使用
  8. CSS3—盒子模型 讲解
  9. HTML5悬浮球源码,js拖拽360桌面悬浮球代码
  10. 【历史上的今天】9 月 8 日:阿里开放平台计划;英特尔发布首款双核酷睿处理器;我国研制全数字高清晰度电视系统