虽然不是第一天学Halcon,但也大差不差,准备是想用一些案例来学Halcon。

首先就是焊接站视觉引导机械臂时的案例,无论做什么样的工程,或难或易都需要能够有一个整体到局部的思想,就是处理图像时要做到慢慢逼近目标效果,而不是为了达到某种效果,只在整体变动。如图,我们需要的时提取出图中的6个焊点,大致思路为:

* Image Acquisition 01: Code generated by Image Acquisition 01
ImageFiles := []
ImageFiles[0] := 'D:/topdesk/新建文件夹 (2)/Image1.jpg'
ImageFiles[1] := 'D:/topdesk/新建文件夹 (2)/Image2.jpg'
ImageFiles[2] := 'D:/topdesk/新建文件夹 (2)/Image3.jpg'
ImageFiles[3] := 'D:/topdesk/新建文件夹 (2)/Image4.jpg'
ImageFiles[4] := 'D:/topdesk/新建文件夹 (2)/Image5.jpg'
for Index := 0 to |ImageFiles| - 1 by 1*关闭窗口dev_close_window ()*读取图片read_image (Image, ImageFiles[Index])* Image Acquisition 01: Do something*得到图像大小get_image_size (Image, Width, Height)*打开一个窗口dev_open_window (0, 0, Width/4, Height/4, 'black', WindowHandle)*相机参数CameraParameters := ['area_scan_division',0.0292901,-427.05,8.2957e-006,8.3e-006,1233.21,1034.14,2590,1942]CameraPose := [0.000805324,-0.000892219,0.0491989,359.334,359.428,90.12,0]**畸变矫正change_radial_distortion_cam_par ('adaptive', CameraParameters, 0, CamParamOut)gen_radial_distortion_map (Map, CameraParameters, CamParamOut, 'bilinear')map_image (Image, Map, ImageMapped)dev_clear_window ()dev_display(ImageMapped)**图像处理read_shape_model ('D:/topdesk/焊接xml/img_model1.shm', ModelID)*在图像中找对应模板find_scaled_shape_model (ImageMapped, ModelID, rad(-180), rad(180), 0.5, 1.2, 0.3, 1, 0.5, 'none', 4, 0.9, Row, Column, Angle, Scale, Score)gen_circle (ROI_0, Row-201.918, Column-811.291, 54.7195)gen_circle (TMP_Region,Row-206.834, Column-512.782, 46.6049)union2 (ROI_0, TMP_Region, ROI_0)gen_circle (TMP_Region, Row-211.751, Column-62.09, 49.5117)union2 (ROI_0, TMP_Region, ROI_0)gen_circle (TMP_Region, Row-216.667, Column+221.78, 52.2062)union2 (ROI_0, TMP_Region, ROI_0)gen_circle (TMP_Region, Row-216.667, Column+675.4, 50.0603)union2 (ROI_0, TMP_Region, ROI_0)gen_circle (TMP_Region, Row-226.5, Column+976.83, 50.8263)union2 (ROI_0, TMP_Region, ROI_0)*提取焊点,单独进行图像处理reduce_domain (ImageMapped, ROI_0, ImageReduced)threshold (ImageReduced, Regions, 149, 255)fill_up (Regions, RegionFillUp)connection (RegionFillUp, ConnectedRegions)opening_circle (ConnectedRegions, RegionOpening, 5.5)*筛选出合适的点作为焊点shape_trans (RegionOpening, RegionTrans, 'outer_circle')select_shape (RegionTrans, SelectedRegions, 'area', 'and', 150, 99999)*计焊点的个数,该产品最多只能有6个焊点count_obj (SelectedRegions, Number)*得到每个焊点的中心位置area_center (SelectedRegions, Area, Row1, Column1)dev_clear_window ()dev_display (ImageMapped)*在图中标出各个焊点的位置if (Number=6)for i := 0 to Number-1 by 1gen_cross_contour_xld (Cross, Row1[i], Column1[i], 61, Angle)stop ()endforendifstop ()
endfor

输出的结果为:

图中为畸变处理后图像,则在未畸变处理图像中显示各个焊点如下:

不难看出中间点位相对准确,俩边点位关于中间便宜程度相同,而畸变处理后的点位更接近于实际点位,所以此相机在工程中,不进行畸变处理,会使焊接时的点位中间部分相对准确,俩边镜像外偏,不经行畸变处理的工程中,也可以通过在像素坐标转换成实际世界坐标时,给每个点加相应的补偿来避免出现焊接偏离焊点的情况。

Halcon 学习之焊点提取相关推荐

  1. halcon第二讲:焊点提取

    本文要完成的任务是将下图中焊点提取出来,对应于halcon例程Blob分析中的ball.hdev. dev_open_window (0, 0, 512, 512, 'black', WindowHa ...

  2. Halcon学习笔记:1D Measuring一维测量_fuse.hdev灯丝测量示例

    Halcon学习笔记:1D Measuring一维测量_fuse.hdev灯丝测量示例 一.基本概念 基本流程为: 获取图像 对图像进行灰度值标定 (针对相机获取的图像灰度和输入能量之间的非线性关系, ...

  3. HALCON学习之旅(七)

    HALCON学习之旅(七) 文章目录 HALCON学习之旅(七) 1.MFC与Halcon混合编程 2.C#与Halcon混合编程 3.Halcon测量助手使用 4.Halcon实例进阶一(拟合区域椭 ...

  4. HALCON学习之旅(四)

    HALCON学习之旅(四) 文章目录 HALCON学习之旅(四) 1.如何对区域进行反选,补集,交集,合并操作 2.如何对区域进行填充操作 3.如何根据区域特征过滤区域 4.如何画各种交互ROI图形 ...

  5. Halcon学习笔记:3D_coordinates(3D标定)

    Halcon学习笔记:3D_coordinates(3D标定) 欢迎有兴趣的朋友一起学习,代码理解注释有问题的可以告诉我,一起讨论,共同进步. *初始化程序,dev_close_window() *关 ...

  6. 一、HALCON学习笔记(容器液位缺陷检测)

    一.HALCON学习笔记(容器液位缺陷检测) * In this example a fill level check for the * pharmaceutical industry is dem ...

  7. Halcon学习笔记(五)几何定位+仿射+车牌识别

    定位 Blob分析 模板匹配 仿射 使用单位矩阵求仿射矩阵 示例:affine_trans_region.hdev 单位矩阵 hom_mat2d_identity (HomMat2DIdentity) ...

  8. halcon例程讲解_跟我学机器视觉-HALCON学习例程中文详解-开关引脚测量

    跟我学机器视觉-HALCON学习例程中文详解-开关引脚测量 This example program demonstrates the basic usage of a measure object. ...

  9. 机器视觉-halcon学习笔记1

    德国的软件,傻瓜式安装,每月更新的licence:开发环境就配置好了. ps:软件可以直接在 halcon学习网上下载,18的版本就行. 这玩意有自带的脚本语言在halcon的开发环境IDE下写,写好 ...

最新文章

  1. java中关于DecimalFormat四舍五入的用法
  2. Tungsten Fabric SDN — 零宕机(ZIU)自动化运维
  3. JavaEE Web开发之Servlet篇
  4. oracle 外部表装载,Oracle 原理:数据装载 ,SQLldr ,外部表
  5. github使用_一文轻松学会GitHub的使用
  6. IE 中释放javascript对象
  7. 南京大学计算机学院宋教授,宋曰钦教授
  8. 浏览器输入url后发生了什么?
  9. linux-shell面试题 之二
  10. selenium截取验证码图片
  11. 信息学奥赛一本通 1381:城市路(Dijkstra)
  12. 不懂得如何优化CNN图像分类模型?这有一份综合设计指南请供查阅
  13. 6425C-Lab8 使用组策略管理安全性(2)
  14. 分布式文件系统FastDFS动态扩容
  15. Abaqus取消汉化(汉译英,英译汉)
  16. CAN波特率与负载率
  17. 9个经典营销创业案例,彻底颠覆你的营销思维
  18. Java多线程——ConcurrentMap、ConcurrentHashMap
  19. MySQL查询优化实例
  20. 【Python】excel格式转换操作 -操作Excel、Word、CSV(4)(保姆级图文注释+测试代码+api例程)

热门文章

  1. 【汇正财经】短线波段操作怎样确定买入点?
  2. MobileNetv1训练猫狗图片
  3. 【css系列】八股2023/6/18
  4. 移动端app支付宝支付
  5. conda安装tensorflow
  6. mysql逻辑不相等_MySQL 运算符_MySQL 算术运算符_MySQL 比较运算符_MySQL 逻辑运算符 - 树懒学堂...
  7. 2022年软件设计师考试知识点:ER模型
  8. 安卓驱动开发要干的那些事
  9. LaTeX 数学公式(简述)
  10. 搜狗私有化新进展:腾讯收购股权获准,后者曾被顶格处罚