当前位置: 首页 > news >正文

c#-Halcon入门教程——标定

 Halcon代码

read_image (NinePointCalibration, 'D:/Desktop/halcon/ca74d-main/九点标定/NinePointCalibration.gif')rgb1_to_gray (NinePointCalibration, GrayImage)get_image_size (GrayImage, Width, Height)
dev_display (GrayImage)* 获取当前显示的窗口句柄
dev_get_window (WindowHandle) 
* 设置显示窗口的显示区域为整个图像大小
* 参数:窗口左上角x坐标,窗口左上角y坐标,窗口高度,窗口宽度
dev_set_part (0, 0, Height, Width)
threshold (GrayImage, Regions, 0, 142)* 填充二值图像中的空洞(输入区域,输出填充后的区域)
fill_up (Regions, RegionFillUp)
* 开运算
opening_circle (RegionFillUp, RegionOpening, 3.5)
* 连接相邻的区域
connection (RegionOpening, ConnectedRegions)
* 根据形状特征(这里是面积)选择区域
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 2259.62, 5000)
*对选择的区域按某一特征排序
* 参数:输入区域,输出排序后的区域,排序特征('character'表示字符特征,这里按区域中心点排序),排序方向('true'表示升序),排序的参考方向(这里是按行排序)
sort_region (SelectedRegions, SortedRegions, 'character', 'true', 'row')
* 在排序后的区域中找到最小的外接圆
* 参数:输入区域,输出圆心的行坐标,输出圆心的列坐标,输出圆的半径
smallest_circle (SortedRegions, Row, Column, Radius)* 生成一个十字标记,用于标记找到的圆心位置
* 参数:输出十字标记,十字中心点的行坐标,十字中心点的列坐标,十字标记的长度,十字标记的倾斜角度(0.785398弧度约等于45度)
gen_cross_contour_xld (Cross, Row, Column, 50, 0.785398)* 显示原始灰度图像
dev_display (GrayImage)* 显示生成的十字标记
dev_display (Cross)
  1. 图像读取:首先,我们使用read_image函数读取存储在指定路径的图像文件。这个函数将图像加载到内存中,以便后续处理。

  2. 灰度转换:由于许多图像处理算法在灰度图像上效果更好,我们使用rgb1_to_gray将RGB图像转换为灰度图像。

  3. 图像尺寸获取:使用get_image_size获取图像的宽度和高度,这对于后续设置显示窗口和计算等很有用。

  4. 显示图像dev_display用于在HALCON的图形窗口中显示图像。

  5. 设置显示区域dev_set_part用于设置显示窗口的显示范围,这里设置为整个图像的大小。

  6. 阈值分割threshold函数将灰度图像转换为二值图像,通过设定一个阈值来区分前景和背景。

  7. 空洞填充fill_up函数用于填充二值图像中的空洞,使前景区域更完整。

  8. 形态学开运算opening_circle使用圆形结构元素对图像进行形态学开运算,可以去除小的噪声点。

  9. 区域连接connection函数将相邻的前景区域连接起来。

  10. 形状选择select_shape根据指定的形状特征(这里是面积)选择满足条件的区域。

  11. 区域排序sort_region根据指定的特征对区域进行排序。

  12. 最小外接圆smallest_circle在排序后的区域中找到最小的外接圆,这里我们假设这是我们要标记的目标圆形区域。

  13. 生成十字标记gen_cross_contour_xld生成一个十字标记,用于标记找到的圆心位置。

  14. 显示标记:最后,使用dev_display显示原始图像和生成的十字标记。

http://www.lryc.cn/news/521184.html

相关文章:

  • MC1.12.2 macOS高清修复OptiFine运行崩溃
  • 精选2款.NET开源的博客系统
  • 转运机器人在物流仓储行业的优势特点
  • 简识MySQL的InnoDB Locking锁的分类
  • 如何通过openssl生成.crt和.key
  • .NetCore 使用 NPOI 读取带有图片的excel数据
  • linux上使用update-alternatives来选择软件版本
  • 【Elasticsearch复合查询】
  • Java List去重:Stream、HashMap与TreeSet对比分析
  • 大师课程:专业角色AE+AI动画动态设计关键帧学院视频课程 Key Frame Academy – Character Animation Launchpad
  • 游戏盾SDK如何防护APP攻击
  • Spring Boot 3.x 整合 Logback 日志框架(支持异步写入)
  • 从0开始学习搭网站第二天
  • 【Unity-Animator】通过 StateMachineBehaviour 实现回调
  • 鸿蒙中自定义slider实现字体大小变化
  • 数据结构与算法之栈: LeetCode 71. 简化路径 (Ts版)
  • STM32-笔记40-BKP(备份寄存器)
  • NAS中不同RAID级别特点与适用场景
  • node.js的进程保活
  • meta name=“viewport“ content=“width=device-width, initial-scale=1.0“
  • 【vue3】 defineExpose 的使用
  • 思维转换:突破思维桎梏,创造更高效的工作与生活
  • OpenCV相机标定与3D重建(55)通用解决 PnP 问题函数solvePnPGeneric()的使用
  • vue3学习日记5 - 项目起步
  • java导出pdf文件
  • 【MySQL学习笔记】MySQL视图View
  • 从玩具到工业控制--51单片机的跨界传奇【2】
  • 【Redis】初识Redis
  • docker虚拟机平台未启用问题
  • 《零基础Go语言算法实战》【题目 2-22】Go 调度器优先调度问题