利用OpenCV与Qt5构建卡尺找圆工具(C++实现)

这篇具有很好参考价值的文章主要介绍了利用OpenCV与Qt5构建卡尺找圆工具(C++实现)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


基于OpenCV与Qt5构建卡尺找圆工具

前言

博主近期基于海康Vision Master4.0做了一个工业视觉工程项目,其中就使用到了海康VM的找圆工具,然后博主根据其中的技术原理,也仿照开发了一个类似的功能,基于OpenCV和Qt5构建一个卡尺找圆的工具。卡尺找圆是在计算机视觉领域中常用的技术,用于检测图像中的圆形目标,广泛应用于工业自动化、机器人导航等领域。
卡尺拟合直线参考博主的利用OpenCV与Qt5构建卡尺拟合直线工具(C++实现)


一、卡尺原理

卡尺的原理就是找N个小矩形ROI里面的灰度值突变的地方。即:遍历每个小矩形ROI,分别找到1个点,这个点是灰度突变的峰值。然后把这N个点拟合成直线或者圆。

二、1D边缘提取

opencv找圆,OpenCV,工业视觉小项目案例,opencv,c++,qt5,计算机视觉,视觉检测

  1. 通过Qt5构建一个卡尺圆查找工具形状,由一个个矩形工具构建;
    opencv找圆,OpenCV,工业视觉小项目案例,opencv,c++,qt5,计算机视觉,视觉检测

  2. 对平均灰度值(轮廓)进行高斯滤波,目的是让曲线更平滑,消除噪点;
    opencv找圆,OpenCV,工业视觉小项目案例,opencv,c++,qt5,计算机视觉,视觉检测

  3. 对平滑后的轮廓求一阶导数;
    opencv找圆,OpenCV,工业视觉小项目案例,opencv,c++,qt5,计算机视觉,视觉检测

  4. 根据设置的参数提取边缘点。

三、圆拟合

圆拟合是一种用于从给定的离散点集合中拟合出一个最佳的圆形的方法。它在许多领域中都有广泛的应用,例如计算机视觉、几何建模等。

圆拟合的原理通常基于最小二乘法,旨在找到一个圆形模型,使得给定的点集与该圆形模型之间的残差平方和最小。其步骤如下:

  1. 数据预处理:首先,对于输入的离散点集合,可以进行一些必要的预处理操作,例如去除异常值或噪声点,确保数据质量。

  2. 初始圆形模型估计:为了得到初始的圆形模型,通常可以通过其中的几个点计算出初始的圆心位置和半径估计值。这可以使用一些简单的方法,如三点定圆法(经过任意三个非共线点确定一个圆)或最小二乘法拟合一个初始圆。

  3. 最小二乘拟合:在得到初始的圆形模型估计后,使用最小二乘法来优化拟合结果。最小二乘法通过迭代的方式调整圆心位置和半径的值,使得拟合误差最小化。

  4. 残差计算和优化:在每次迭代中,根据当前的圆心位置和半径,计算每个点到圆的距离,然后将这些距离的平方和作为拟合误差的度量。根据拟合误差,通过优化算法(如非线性最小二乘法或梯度下降法)更新圆心和半径的值。

  5. 收敛判断:对于每次迭代,可以设定一个收敛条件,当满足条件时停止迭代,得到最终的圆形模型。

需要注意的是,圆拟合方法的性能和效果取决于离散点集的分布和噪声程度。对于噪声较多或存在异常点的情况,可能需要使用一些鲁棒性更好的拟合方法,例如 RANSAC(随机抽样一致性)算法来估计圆形模型。

四、软件实现

未使用商业图像处理库,而是纯粹Qt5+OpenCV
opencv找圆,OpenCV,工业视觉小项目案例,opencv,c++,qt5,计算机视觉,视觉检测

  1. 选择要查找圆的图像
    opencv找圆,OpenCV,工业视觉小项目案例,opencv,c++,qt5,计算机视觉,视觉检测

  2. 绘制一个矢量圆查找工具
    opencv找圆,OpenCV,工业视觉小项目案例,opencv,c++,qt5,计算机视觉,视觉检测

  3. 圆查找
    opencv找圆,OpenCV,工业视觉小项目案例,opencv,c++,qt5,计算机视觉,视觉检测
    4.与海康Vision Master对比
    opencv找圆,OpenCV,工业视觉小项目案例,opencv,c++,qt5,计算机视觉,视觉检测
    opencv找圆,OpenCV,工业视觉小项目案例,opencv,c++,qt5,计算机视觉,视觉检测
    海康Vision Master卡尺工具计算: 圆半径是233.628,圆心(831.874,504.140)
    博主开发的卡尺找圆工具计算 圆半径是233.125,圆心(831.584,503.827)

结束语

由于博主能力有限,本篇文章中提及的方法,也难免会有疏漏之处,希望您能热心指出其中的错误,以便下次修改时能以一个更完美更严谨的样子,呈现在大家面前。文章来源地址https://www.toymoban.com/news/detail-689048.html

到了这里,关于利用OpenCV与Qt5构建卡尺找圆工具(C++实现)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • VS2019+OpenCV+Qt5.15.2安装及工程配置

    目录 一、下载链接 1.1 VS2019下载安装 1.2 OpenCV下载安装 1.3 Qt5.15下载安装 二、工程环境配置 2.1 OpenCV环境配置 2.1.1  环境变量配置 2.1.2 工程属性表配置  2.1.3 重启vs测试  2.2 Qt环境配置 2.2.1 Qt Creator设置  2.2.2 VS2019配置  2.2.3 创建Qt项目 2.2.4 UI 设计配置 该文件仅 1.39 MB,是 VS

    2024年02月16日
    浏览(57)
  • 6. QT环境下使用OPenCV(利用鼠标实现图像的ROI区域选择)

    1. 说明 一张图像显示的内容可能并非所有的都是有用信息,有时需要选定某些区域做出特殊的处理。在OPenCV当中可以在图像上响应鼠标的操作,选取出图像上的特殊区域 — ROI区域。 效果展示: 2. 实现步骤 首先在QtCreator中创建一个新的widget项目,并配置好OPenCV的开发环境,

    2024年02月12日
    浏览(44)
  • RK3568+QT5+OpenCV Debian10母板开发环境搭建自记录

    最重要的就是需要opencv的源码包,也就是source 1.首先要对Debian10的镜像源进行修改 路径在/etc/apt/source.list中,需要换上下面的镜像,可以在终端直接输入: sudo nautilus 启动root版本的文件管理器直接修改,也可以利用vim等等,旧镜像可以先注释掉 修改后,输入: sudo apt update

    2024年02月13日
    浏览(52)
  • 12. openCV在QT环境中利用zBar开发库实现二维码内容识别

    1. 说明 本篇博客仅记录如何使用zBar库进行二维码内容的识别,其中牵扯到的一些其它知识点,比如二维码区域检测、zBar库开发环境配置等可以参考本专栏的其它相关博客,此篇博客不再赘述。 2. 具体步骤 博客中代码功能:手动选择一张包含二维码的图片,会将检测到的二

    2024年01月24日
    浏览(37)
  • Qt利用VCPKG和CMake和OpenCV和Tesseract实现中英文OCR

      今天看 OpenCV 方面的教程,pdf 格式的,因为一些强迫症的习惯,喜欢添加一些书签,手动是不太愿意的,自然就想到利用OCR来实现。   想要自己编码实现OCR,方案比较简单就是 Tesseract 。单独使用 Tesseract 也可以,但最好利用 OpenCV 来进行图像方面的处理,一大堆方法可

    2024年02月05日
    浏览(47)
  • Win10平台VS2017+OpenCV3.4.0+Qt5.12配置教程

    本文专为图像处理开发项目人员准备,涉及多个软件和库的安装、配置教程,亲测可行。 1、 VS 是美国微软公司(Microsoft)开发的 集成开发环境 “Visual Studio” 的简称,是Windows平台最流行的应用程序集成开发环境。 注意区分:MSVC(Microsoft Visual C++ Compiler)是指微软的VC编译

    2024年02月05日
    浏览(55)
  • OpenCV+Qt实现图像处理操作工具

    Qt界面实现 雪花屏 高斯模糊 中值滤波 毛玻璃 灰度化 XY方向模糊 双边模糊 腐蚀 [图像处理操作] 要求左边原图,右边效果图 结果展示如下:[图像处理实现有点多,就不一个一个地展示了,各别展示如下] 雪花屏 本文福利, 莬 费领取Qt开发学习资料包、技术视频,内容包括(

    2024年02月06日
    浏览(43)
  • 嵌入式Linux Qt5 (C++)开发栏目概述

    本栏目开始介绍Linux系统下的Qt C++程序开发,资源是以嵌入式为切入点(现在Linux系统下的Qt C++程序开发好像就是应用于嵌入式),那就跟着一起学习 Linux系统下的Qt C++程序开发知识 ,再扩展一下 嵌入式 的知识吧。我这里默认已经 熟悉C++基本语法、熟悉Qt在windows下的使用方

    2024年02月12日
    浏览(42)
  • 基于Opencv的卡尺找线

    首先, 边缘点的提取主要学习的是VisionPro的CogCaliperTool工具的原理。 之后,获得边缘点集之后,用RANSAC算法把异常点筛选出来。RANSAC的算法原理参考RANSAC算法(附RANSAC直线拟合C++与Python版本),有做小小地修改,根据以下公式计算迭代次数: k = l o g ( 1 − p ) l o g ( 1 − w n ) k=

    2024年02月07日
    浏览(27)
  • QT+OpenCV实现一个标注工具(图像处理、边缘检测)

    作者是一名QT初学者,为检验学习成果及完成毕业设计,在张老师和学姐的指导下,开发了这个标注工具。CSDN上很多文章对我的学习提供了极大的帮助,分享这篇文章给需要的人一起学习进步~ 废话不多说,先看看效果: Windows10、Qt5.13.2(编译器用的是MinGW64_bit)、OpenCV4.1 环

    2024年02月11日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包