halcon脚本-找直线并拟合

这篇具有很好参考价值的文章主要介绍了halcon脚本-找直线并拟合。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

本文主要是实现halcon脚本找直线,并根据两条拟合直线计算交点坐标,并得出其位置角度。


一、图片分析

本文主要针对一下图片进行检测:
图1:
halcon脚本-找直线并拟合
图2:
halcon脚本-找直线并拟合
从图上标明可知,本次检测就是我画的蓝色的线条部分


二、思路

根据现场照片来说,本次的实验的工件存在各种角度,不单单是摆着那么正的,因此步骤如下:
1、先使用模板匹配初步定位板子;
2、根据定位的位置:x,y,r来得到基于模板的两条直线(模板中心垂直的两条线)
3、根据两条线,分别得到一系列点,然后使用循环,点和点之间进行测量检测,最后得到检测出来的点
4、把检测出来的点拟合并绘制,并计算两点之间的交点


三、代码

1.指定模板

for Index := 0 to Number-1 by 1
    select_obj (Image, temp_Image, Index+1)
    draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)
    gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)
    reduce_domain (temp_Image, Rectangle, ImageReduced)
    create_ncc_model (ImageReduced, 'auto', -rad(180), rad(360), 'auto', 'use_polarity', ModelID_temp)
    tuple_concat (ModelID, ModelID_temp, ModelID)
endfor

2.定位模板

read_image (CheckImage, ImageFiles[img_index])
find_ncc_model (CheckImage, ModelID, -rad(180), rad(360), 0.8, 1, 0.5, 'true', 0, Check_Row, Check_Column, Check_Angle, Check_Score)

3.得到一系列基于目标的点

area_center (Rectangle, Area, Row, Column)
vector_angle_to_rigid (Row, Column, 0,  Check_Row, Check_Column, Check_Angle, Check_HomMat2D)
affine_trans_region (Rectangle, RegionAffineTrans2, Check_HomMat2D, 'constant')
gen_cross_contour_xld (Cross, Check_Row, Check_Column, 100, Check_Angle)

4.遍历点,得到新点

这里的重要算子使用:measure_pos,用测量方法得到点

gen_cross_contour_xld (Cross, Check_Row + (stratLength+Index)*cos(Check_Angle), Check_Column + (stratLength+Index)*sin(Check_Angle), 100, Check_Angle)
dev_display (Cross)
gen_measure_rectangle2 (Check_Row + (stratLength+Index)*cos(Check_Angle), Check_Column + (stratLength+Index)*sin(Check_Angle), Check_Angle,  CheckHeight, CheckLength,  Width, Height, 'nearest_neighbor', MeasureHandle)
measure_pos (CheckImage, MeasureHandle, 1, 40, 'all', 'all', RowEdge, ColumnEdge, Amplitude, Distance)
if (|RowEdge|>0)
    tuple_concat (Point1_Row, RowEdge[0], Point1_Row)
    tuple_concat (Point1_Col, ColumnEdge[0], Point1_Col)     
endif
close_measure (MeasureHandle)

总结&效果

1.创建模板

halcon脚本-找直线并拟合

2.遍历查找各点

halcon脚本-找直线并拟合
halcon脚本-找直线并拟合
halcon脚本-找直线并拟合
halcon脚本-找直线并拟合

3.最后效果

halcon脚本-找直线并拟合
halcon脚本-找直线并拟合文章来源地址https://www.toymoban.com/news/detail-443504.html

到了这里,关于halcon脚本-找直线并拟合的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • OpenCV 笔记(17):轮廓的椭圆拟合、直线拟合

    轮廓的 椭圆拟合 是指用椭圆来近似轮廓的形状。当这个椭圆的长轴和短轴相等时,它就是一个圆。 椭圆拟合的基本思路是:对于给定平面上的一组样本点,寻找一个椭圆,使其尽可能接近这些样本点。也就是说,将图像中的一组数据以椭圆方程为模型进行拟合,使某一椭圆

    2024年01月19日
    浏览(40)
  • opencv(38) 图像轮廓之七:椭圆拟合和直线拟合

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

    2024年02月04日
    浏览(41)
  • 自留-Python:线性拟合(直线+曲线)

    使用最小二乘法的线性拟合,自留代码 读取数据  

    2024年02月12日
    浏览(41)
  • Qt + OpenCV + Halcon + QScintilla 实现Halcon的脚本引擎功能 (源码)

    在工业领域中,缺陷检测、目标计数等功能的应用,其过程基本都是见招拆招,没有一个具体的标准,把输入输出接口标准化,过程用脚本引擎代替就可以实现功能的标准模块。 输入输出接口采用Qt + OpenCV来实现,OpenCV需要将采集到的图片转为Halcon的图像接口用于脚本检测,

    2024年02月05日
    浏览(49)
  • 点云中点法向量,点拟合的直线,点拟合的平面

    计算步骤: 找到点pi相邻点集合S所有点Vi,然后去中心化,并构造协方差矩阵,公式如下: 二维点云该点曲率计算方法: 三维点云该点曲率计算方法: 最小特征值对应的特征向量就是点的法向量 相邻点集合S拟合成一条直线。 计算步骤: 计算出点集合协方差矩阵M(也就是上面的

    2023年04月20日
    浏览(38)
  • C语言编程:最小二乘法拟合直线

    本文研究通过C语言实现最小二乘法拟合直线。 最小二乘法,简单来说就是根据一组观测得到的数值,寻找一个函数,使得函数与观测点的误差的平方和达到最小。在工程实践中,这个函数通常是比较简单的,例如一次函数或二次函数。 汽车上的毫米波雷达可以探测到其他目

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

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

    2024年02月03日
    浏览(53)
  • Halcon 用点来拟合平面

    项目要求用多个点来拟合一个平面,然后再用其他平面上的点来计算这个点到平面的距离,halcon 有现成的拟合函数。 MatLab 版本:Matlab 最小二乘法 拟合平面_Σίσυφος1900的博客-CSDN博客  平面方程:ax+by+cz+d=0; 那么计算点到平面的距离就是: 【MQ笔记】超简单的最小二乘法拟

    2024年02月15日
    浏览(31)
  • Open3D Ransac拟合分割多条直线

      算法的核心原理还是RANSAC拟合空间之嫌,具体理论可参考:Open3D——RANSAC 三维点云空间直线拟合。只是对代码稍加修改使其适用于分割点云数据中的多条直线。

    2024年02月16日
    浏览(38)
  • chatgpt赋能python:Python如何拟合直线:使用最小二乘法

    在数据分析和机器学习领域,拟合一个最佳的直线是很常见和有用的。Python中有很多库可以拟合直线,但最小二乘法是其中最常用的一种方法。在本文中,我们将介绍最小二乘法的原理和如何在Python中实现。 最小二乘法是一种常用的回归分析方法,目的是找到一条直线来拟合

    2024年02月08日
    浏览(57)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包