利用OpenCV与Qt5构建卡尺拟合直线工具(C++实现)

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


基于OpenCV与Qt5构建卡尺拟合直线工具

前言

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

一、卡尺边缘直线拟合概述

卡尺边缘直线拟合是一种常用的计算机视觉技术,用于在图像中检测和拟合出物体的直线边缘。其原理基于数学几何和统计学方法。

以下是卡尺边缘直线拟合的基本原理:

  1. 边缘检测:首先,在图像上进行边缘检测,将图像中的边缘信息提取出来。常用的边缘检测算法包括Sobel算子、Canny算子等。

  2. 卡尺滑动窗口:从图像中选择一个起始点,然后以固定的步长和方向移动一个小窗口(通常为一维),在窗口内计算边缘像素的梯度。

  3. 距离度量与拟合:对于每个窗口,通过距离度量函数(例如,最小二乘法)来衡量窗口内像素与直线之间的误差。最常见的距离度量函数是点到直线的距离。

  4. 迭代更新:迭代地调整窗口的位置,使得距离度量的误差最小化。这可以通过不断调整窗口的位置和方向来实现,直到达到收敛条件。

  5. 直线拟合:最终,当窗口移动到最佳拟合直线时,将窗口内的点拟合成一条直线模型。这可以通过拟合算法(如最小二乘法)来计算直线参数(如斜率和截距)。

通过上述步骤,卡尺边缘直线拟合可以有效地从图像中提取直线边缘信息,并拟合出相应的直线模型。这种方法在许多计算机视觉任务中都得到了广泛应用,如目标检测、线段提取、道路标线检测等。


二、卡尺原理

卡尺的原理就是找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. 确定拟合模型:对于直线拟合,我们假设所需拟合的模型为一条直线。直线模型可以用斜率(slope)和截距(intercept)来表示,即y = mx + b,其中m是斜率,b是截距。

  3. 损失函数选择:选择一个损失函数来度量观测点与拟合直线之间的误差。常见的损失函数是最小二乘法(Least Squares),即将每个观测点到直线的垂直距离的平方求和。

  4. 参数估计:通过最小化损失函数,找到最佳的直线参数(斜率和截距)。在最小二乘法中,可以通过公式计算得到闭合解,或者使用优化算法(如梯度下降)进行迭代优化。

  5. 模型评估:拟合直线后,可以对模型进行评估以确定其适用性和效果。常见的评估指标包括均方误差(Mean Squared Error),确定系数(Coefficient of Determination)等。

五、软件实现

未使用商业图像处理库,而是纯粹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

结束语

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

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

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

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

相关文章

  • opencv(38) 图像轮廓之七:椭圆拟合和直线拟合

    椭圆拟合法的基本思路是:对于给定平面上的一组样本点,寻找一个椭圆,使其尽可能接近这些样本点。也就是说,将图像中的一组数据以椭圆方程为模型进行拟合,使某一椭圆方程尽量满足这些数据,并求出该椭圆方程的各个参数。 就椭圆拟合而言,就是先假设椭圆参数,

    2024年02月04日
    浏览(30)
  • OpenCV(三十七):拟合直线、三角形和圆形

    1.点集拟合的含义        点集拟合是一种通过拟合函数或曲线来近似描述给定离散数据点的技术,在点集拟合中,可以使用不同的函数或曲线拟合方法来拟合直线、三角形和圆形。 直线拟合 :对于给定的二维数据点集合,可以使用最小二乘法来拟合一条直线。 三角形拟合

    2024年02月03日
    浏览(41)
  • 学习Opencv(蝴蝶书/C++)代码——1.macOS下安装OpenCV4.8.0和QT5.15(C++)

    先看看vscode里怎么弄c++,详见:mac下vscode配置c++环境 同时记得把cmake下载好,路径配置好 直接从官网教程开始(事实证明不是很全面,还是有很多问题需要额外找解决方案): https://docs.opencv.org/4.x/d0/db2/tutorial_macos_install.html 一般是有两种安装方式: 直接安装对应平台的预编

    2024年01月18日
    浏览(59)
  • Opencv之RANSAC算法用于直线拟合及特征点集匹配详解

    讲述Ransac拟合与最小二乘在曲线拟合上的优缺点 讲述在进行特征点匹配时,最近邻匹配与Ransac匹配的不同之处 另外,Ransac也被用于椭圆拟合、变换矩阵求解等 1.1 原理 RANSAC(RANdom SAmple Consensus,随机采样一致)算法是从一组含有“外点”(outliers)的数据中正确估计数学模型参数的

    2024年02月05日
    浏览(28)
  • 霍夫变换直线检测算法实现OpenCV(C++)

    一、原理 对于霍夫变换的原理这里就不进行描述啦,感兴趣的可以自行搜索。也可以看知乎上面的这篇贴文通俗易懂理解——霍夫变换原理。 二、算法代码 三、效果测试 测试代码 上述代码中的drawLine()函数是《OpenCV4快速入门》一书的代码清单 7-2中的原函数,只用于画线。

    2024年02月05日
    浏览(32)
  • 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日
    浏览(42)
  • 【OpenCv • c++】几何检测 —— 霍夫变换 | 霍夫直线检测 | 霍夫线变化

    🚀 个人简介:CSDN「 博客新星 」TOP 10 , C/C++ 领域新星创作者 💟 作    者: 锡兰_CC ❣️ 📝 专    栏: 【OpenCV • c++】计算机视觉 🌈 若有帮助,还请 关注➕点赞➕收藏 ,不行的话我再努努力💪💪💪

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

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

    2024年02月13日
    浏览(32)
  • 基于Qt5的图像交互控件开发(C++实现)

    博主近期看到海康VM、halcon以及visionpro视觉软件都包含一个图像智能交互控件,然后近期根据其中的技术原理,也基于Qt5仿照开发了一个类似的功能,包含矩形、旋转矩形、任意多边形、圆、圆环、扇环,直线卡尺以及圆卡尺等常用控件,图像智能交互是在计算机视觉领域中

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

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

    2024年02月05日
    浏览(44)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包