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)
-
图像读取:首先,我们使用
read_image函数读取存储在指定路径的图像文件。这个函数将图像加载到内存中,以便后续处理。 -
灰度转换:由于许多图像处理算法在灰度图像上效果更好,我们使用
rgb1_to_gray将RGB图像转换为灰度图像。 -
图像尺寸获取:使用
get_image_size获取图像的宽度和高度,这对于后续设置显示窗口和计算等很有用。 -
显示图像:
dev_display用于在HALCON的图形窗口中显示图像。 -
设置显示区域:
dev_set_part用于设置显示窗口的显示范围,这里设置为整个图像的大小。 -
阈值分割:
threshold函数将灰度图像转换为二值图像,通过设定一个阈值来区分前景和背景。 -
空洞填充:
fill_up函数用于填充二值图像中的空洞,使前景区域更完整。 -
形态学开运算:
opening_circle使用圆形结构元素对图像进行形态学开运算,可以去除小的噪声点。 -
区域连接:
connection函数将相邻的前景区域连接起来。 -
形状选择:
select_shape根据指定的形状特征(这里是面积)选择满足条件的区域。 -
区域排序:
sort_region根据指定的特征对区域进行排序。 -
最小外接圆:
smallest_circle在排序后的区域中找到最小的外接圆,这里我们假设这是我们要标记的目标圆形区域。 -
生成十字标记:
gen_cross_contour_xld生成一个十字标记,用于标记找到的圆心位置。 -
显示标记:最后,使用
dev_display显示原始图像和生成的十字标记。
相关文章:
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_win…...
MC1.12.2 macOS高清修复OptiFine运行崩溃
最近在玩RLCraft,在windows中运行正常的,移植到macOS中发现如果加载OptiFine模组就会崩溃 报错日志 报错日志如下,其中已经包含了各种版本信息,我就不单独说明了。这里说一下,报错的时候用的是oracle jdk x64的&…...
精选2款.NET开源的博客系统
前言 博客系统是一个便于用户创建、管理和分享博客内容的在线平台,今天大姚给大家分享2款.NET开源的博客系统。 StarBlog StarBlog是一个支持Markdown导入的开源博客系统,后端基于最新的.Net6和Asp.Net Core框架,遵循RESTFul接口规范&…...
转运机器人在物流仓储行业的优势特点
在智能制造与智慧物流的浪潮中,一款革命性的产品正悄然改变着行业的面貌——富唯智能转运机器人,它以卓越的智能科技与创新的设计理念,引领着物流领域步入一个全新的高效、智能、无人的时代。 一、解放双手,重塑物流生态 富唯智能…...
简识MySQL的InnoDB Locking锁的分类
( 参考官方网页: MySQL :: MySQL 5.7 Reference Manual :: 14.7.1 InnoDB Locking) 一、InnoDB Locking锁的分类: 锁的分类英文缩写共享锁Shared LocksS排他锁Exclusive LocksX意向共享锁Intention Shared LocksIS意向排他锁Int…...
如何通过openssl生成.crt和.key
生成 .crt(证书文件)和 .key(私钥文件)的过程通常涉及使用加密工具或库来创建密钥对,并生成证书请求,最终由证书颁发机构(CA)或自签名生成证书。以下是生成 .crt 和 .key 文件的详细…...
.NetCore 使用 NPOI 读取带有图片的excel数据
在.NetCore使用NPOI插件进行批量导入时,获取Excel中的所有的图片数据,存到集合中。 1.定义类PictureData 代码如下: public class PictureData { public byte[] Data { get; set; } } 2.数据集引用 using NPOI.XSSF.UserModel; usin…...
linux上使用update-alternatives来选择软件版本
比如我在linux系统上安装多个版本的gcc /usr/local/gcc-4.8.2/ /usr/local/gcc-8.4.0/ /usr/local/gcc-9.4.0/我要根据需要来切换系统环境下的gcc命令的版本,我可以先 update-alternatives --install /usr/bin/gcc gcc /usr/local/gcc-4.8.2/bin/gcc 1 update-alt…...
【Elasticsearch复合查询】
Elasticsearch复合查询 在Elasticsearch中,复合查询(Compound Queries)是用来封装其他复合查询或叶子查询的查询类型。它们的主要目的是组合这些查询的结果和分数、改变它们的行为或者从查询上下文切换到过滤上下文。 一个常见的复合查询是…...
Java List去重:Stream、HashMap与TreeSet对比分析
在处理包含重复元素的List时,高效地去除重复项是提高数据质量的关键步骤。本文将详细介绍如何运用Java 8 Stream API、HashMap以及TreeSet来实现List去重,并比较它们之间的优缺点及适用场景。 1. 使用Stream API去重 List<String> duplicates …...
大师课程:专业角色AE+AI动画动态设计关键帧学院视频课程 Key Frame Academy – Character Animation Launchpad
使用专业角色动画升级您的动态设计。我将流程的每个阶段分解为易于理解的步骤,以便您可以自信、无缝地创建迫不及待地向客户展示的专业角色动画。 您的创造力就是您的超能力。但说到经验,没有什么比索具过程更能扼杀我的创作火花了……对于许多人来说&am…...
游戏盾SDK如何防护APP攻击
游戏盾SDK如何防护APP攻击?在数字时代的大潮中,APP的安全性是衡量其服务质量与用户信任度的关键指标之一。面对日益复杂多变的网络攻击,如何确保APP在开放的网络环境中稳健运行,成为开发者面临的一大挑战。游戏盾SDK,作…...
Spring Boot 3.x 整合 Logback 日志框架(支持异步写入)
Spring Boot 3.x 整合 Logback 日志框架(支持异步写入) 在构建任何应用程序时,良好的日志管理都是必不可少的。日志可以帮助我们监控、调试和跟踪代码的运行情况。 1. 添加日志配置文件 在 /resources 资源目录下,创建名为 log…...
从0开始学习搭网站第二天
前言:今天比较惭愧,中午打铲吃了一把,看着也到钻二了,干脆顺手把这个赛季的大师上了,于是乎一直到网上才开始工作,同样,今天的学习内容大多来自mdn社区mdn 目录 怎么把文件上传到web服务器采用S…...
【Unity-Animator】通过 StateMachineBehaviour 实现回调
StateMachineBehaviour 简介 StateMachineBehaviour是一个基类,所有状态脚本都派生自该类。它可以在状态机进入、退出或更新状态时执行代码,而无需编写自己的逻辑来测试和检测状态的变化。这使得开发者可以更方便地处理状态转换时的逻辑,例…...
鸿蒙中自定义slider实现字体大小变化
ui: import { display, mediaquery, router } from kit.ArkUI import CommonConstants from ./CommonConstants; import PreferencesUtil from ./PreferencesUtil; import StyleConstants from ./StyleConstants;// 字体大小 Entry Component struct FontSize {Sta…...
数据结构与算法之栈: LeetCode 71. 简化路径 (Ts版)
简化路径 https://leetcode.cn/problems/simplify-path/description/ 描述 给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 ‘/’ 开头),请你将其转化为 更加简洁的规范路径 在 Unix 风格的文件系统中…...
STM32-笔记40-BKP(备份寄存器)
一、什么是BKP(备份寄存器)? 备份寄存器是42个16位的寄存器,可用来存储84个字节的用户应用程序数据。他们处在备份域里,当VDD电源被切断,他们仍然由VBAT维持供电。当系统在待机模式下被唤醒,或…...
NAS中不同RAID级别特点与适用场景
1. RAID 0(条带化) 硬盘数量:至少2块。硬盘要求:硬盘容量可以不同,但总容量以最小硬盘为准(例如:1TB 2TB 2TB,其中1TB会被浪费)。优点: 读写性能显著提升&…...
node.js的进程保活
nodejs的进程保活其实用PM2应该更好用些,不过由于原理其实并不复杂,我们可以自己手写一个服务来干这个工作。 假设我们有一个服务,可以这样来定义下它的相关信息: const svcs[ {"sid":"apl","name"…...
Stitches项目架构分析:RequireJS模块化设计与Grunt构建流程完全指南 [特殊字符]
Stitches项目架构分析:RequireJS模块化设计与Grunt构建流程完全指南 🚀 【免费下载链接】stitches HTML5 Sprite Sheet Generator 项目地址: https://gitcode.com/gh_mirrors/sti/stitches Stitches是一个基于HTML5的雪碧图生成器,它采…...
3个关键功能解析:USBToolBox如何简化macOS与Windows的USB端口映射难题
3个关键功能解析:USBToolBox如何简化macOS与Windows的USB端口映射难题 【免费下载链接】tool the USBToolBox tool 项目地址: https://gitcode.com/gh_mirrors/too/tool 在Hackintosh和跨平台开发领域,USB端口映射一直是个令人头疼的技术难题。US…...
64_《智能体微服务架构企业级实战教程》授权与认证之授权认证集成测试
前言 配套视频教程: 在 Bilibili课堂、CSDN课程、51CTO学堂 同步发售,提供:源码+部署脚本+文档。 bilibili课堂视频教程:智能体微服务架构企业级实战教程_哔哩哔哩_bilibili CSDN课程视频教程:智能体微服务架构企业级实战教程_在线视频教程-CSDN程序员研修院 51CTO学堂…...
2026年HR招聘偏好白皮书:这5项附加技能出现频率暴涨
2026 年的招聘市场,正在从“看你会什么岗位技能”,转向“看你能不能把岗位做得更智能”。HR筛简历时,越来越关注候选人的AI应用能力、数据化思维和业务落地能力。人社部近年发布的新职业中,已经出现生成式人工智能系统应用员、人工…...
Redis分布式锁进阶第二十篇
一、本篇前置衔接 第二十篇我们完成了全系列终局复盘,整理了故障排查SOP与企业级落地铁律。常规单资源锁、热点分片锁、隔离锁全部讲透,但真实复杂业务永远不是单一资源:下单要扣库存、扣优惠券、扣积分、冻结余额,多资源并行争抢…...
解决Claude Code访问不稳定与Token不足的痛点
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 解决Claude Code访问不稳定与Token不足的痛点 许多开发者将Claude Code作为日常编程的得力助手,用于代码生成、问题调试…...
QMCDecode终极指南:3步解锁QQ音乐加密格式,实现跨平台音乐自由
QMCDecode终极指南:3步解锁QQ音乐加密格式,实现跨平台音乐自由 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目…...
嵌入式快速原型开发:基于Sceptre平台与LPC2148的实战指南
1. 项目概述:Sceptre,一个被低估的嵌入式快速原型利器 在嵌入式开发的世界里,我们总是在寻找那个“刚刚好”的平台:它要足够强大,能跑复杂的算法;要足够小巧,能塞进各种外壳;要足够便…...
从BUG()到panic:深入Linux 5.4内核,看异常处理如何层层递进
从BUG()到panic:Linux内核异常处理的防御体系全解析当你在深夜调试一个内核模块时,突然屏幕刷出一串红色警告——这可能是每个Linux内核开发者都经历过的噩梦时刻。但你是否想过,从第一行警告出现到系统完全崩溃,内核究竟经历了怎…...
开发转兼职DBA(二):执行计划教我做事
开发转兼职DBA(二):执行计划教我做事 查询慢了不知道为什么,加了索引还是慢,复合索引怎么建,执行计划怎么看——这些不是DBA的专利,是每个写SQL的开发者迟早要面对的事。 文章目录 开发转兼职DB…...
