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

Halcon例程代码解读:安全环检测(附源码|图像下载链接)

安全环检测核心思路与代码详解

项目目标

本项目的目标是检测图像中的安全环位置和方向。通过形状匹配技术,从一张模型图像中提取安全环的特征,并在后续图像中识别多个实例,完成检测和方向标定。


实现思路

安全环检测分为以下核心步骤:

  1. 模型图像加载与处理: 读取包含安全环的模型图像,并定义感兴趣区域 (ROI),以减少背景干扰。
  2. 形状模型创建: 基于感兴趣区域提取特征,训练通用形状模型(Generic Shape Model)。
  3. 目标匹配检测: 在待检测图像中搜索安全环,输出位置、方向和检测结果。
  4. 结果可视化: 通过绘制轮廓和方向箭头,直观展示安全环的位置和方向信息。

代码讲解

以下是完整代码的逐步解析,重点放在每个步骤的核心功能和逻辑。


1. 初始化

* 关闭窗口更新以优化性能
dev_update_window ('off')* 加载模型图像
read_image (ModelImage, 'image/rings_01')* 获取图像尺寸
get_image_size (ModelImage, Width, Height)* 打开窗口并设置显示区域
dev_close_window ()
dev_open_window (0, 0, Width, Height, 'white', WindowHandle)
dev_set_part (0, 0, Height - 1, Width - 1)* 显示模型图像
dev_display (ModelImage)
  • 核心功能:
    • 关闭窗口更新 (dev_update_window ('off')) 以提高运行性能。
    • 读取模型图像并获取图像尺寸,为后续显示做准备。
    • 打开一个适配图像尺寸的显示窗口。

2. 定义感兴趣区域 (ROI)

* 设置安全环的ROI
Row := 251
Column := 196
Radius := 103* 创建圆形区域作为ROI
gen_circle (ModelROI, Row, Column, Radius)* 显示ROI
dev_display (ModelROI)
  • 核心功能:
    • 使用 gen_circle 函数定义圆形区域,圈定包含安全环的区域。
    • 通过 ROI 减少背景干扰,确保模型训练的准确性。

3. 检查并创建形状模型

检查模型区域
* 裁剪图像,仅保留ROI部分
reduce_domain (ModelImage, ModelROI, ImageROI)* 检查ROI的形状特征
inspect_shape_model (ImageROI, ShapeModelImage, ShapeModelRegion, 1, 30)* 显示检查结果
dev_clear_window ()
dev_display (ShapeModelRegion)
  • 核心功能:
    • 使用 reduce_domain 裁剪图像,只保留 ROI。
    • 调用 inspect_shape_model 检查模型区域的形状特征,确保模型质量。
创建形状模型

在这里插入图片描述

* 创建并训练通用形状模型
create_generic_shape_model (ModelID)
set_generic_shape_model_param (ModelID, 'metric', 'ignore_global_polarity')
train_generic_shape_model (ImageROI, ModelID)* 提取模型轮廓
get_generic_shape_model_object (ShapeModel, ModelID, 'contours')

在这里插入图片描述

  • 核心功能:
    • 调用 create_generic_shape_model 创建模型,随后通过 train_generic_shape_model 基于 ROI 图像训练模型。
    • 设置模型参数 ignore_global_polarity,忽略极性变化,增强鲁棒性。

4. 目标匹配与检测

* 设置形状匹配参数
set_generic_shape_model_param (ModelID, 'max_overlap', 0.55)
set_generic_shape_model_param (ModelID, 'min_score', 0.4)* 遍历待检测图像
for i := 1 to 7 by 1read_image (SearchImage, 'image/rings_' + (i + 1)$'02')dev_display (SearchImage)* 进行形状匹配find_generic_shape_model (SearchImage, ModelID, MatchResultID, NumMatchResult)* 如果检测到物体if (NumMatchResult > 0)set_tposition (WindowHandle, 20, 24)write_string (WindowHandle, '检测到目标数量:'+NumMatchResult)* 遍历所有检测结果for j := 0 to NumMatchResult - 1 by 1* 获取目标轮廓get_generic_shape_model_result_object (Objects, MatchResultID, j, 'contours')dev_set_color ('cyan')dev_display (Objects)* 获取位置和方向信息get_generic_shape_model_result (MatchResultID, j, 'row', Row)get_generic_shape_model_result (MatchResultID, j, 'column', Column)get_generic_shape_model_result (MatchResultID, j, 'hom_mat_2d', HomMat2D)* 计算方向箭头终点affine_trans_pixel (HomMat2D, -120, 0, RowArrowHead, ColumnArrowHead)dev_set_color ('blue')disp_arrow (WindowHandle, Row, Column, RowArrowHead, ColumnArrowHead, 2)endforelse* 未检测到目标set_tposition (WindowHandle, 20, 20)write_string (WindowHandle, '未检测到物体!')endif
endfor
  • 核心功能:
    1. 目标匹配:
      • 使用 find_generic_shape_model 在每张图像中搜索目标。
      • 匹配结果包括目标数量、位置(行、列坐标)和方向(仿射矩阵)。
    2. 显示检测结果:
      • 高亮显示目标轮廓,并绘制箭头标注方向。
      • 若检测不到目标,则显示“未检测到物体”的提示。
        -在这里插入图片描述
        在这里插入图片描述

在这里插入图片描述


5. 清理资源与结束程序

* 恢复窗口更新
dev_update_window ('on')* 清理形状模型
clear_shape_model (ModelID)
  • 核心功能:
    • 恢复窗口更新。
    • 释放形状模型资源,避免内存占用。

项目核心思路总结

  1. 模型训练:
    使用感兴趣区域提取安全环的形状特征,生成通用形状模型。

  2. 多图像匹配:
    遍历多张待检测图像,利用形状模型进行目标匹配,输出目标位置和方向信息。

  3. 结果可视化:
    通过高亮轮廓和绘制箭头,直观展示安全环的位置与方向。


适用场景

该项目适用于以下应用场景:

  • 工业生产中的零件检测: 如汽车轮毂、机械零件中的环状目标检测。
  • 视觉质量控制: 检测物体位置和方向是否符合预期。

代码与资源

通过网盘分享的文件:安全环
链接: https://pan.baidu.com/s/1gAHHtwL53Sow00jUHD_Z2g?pwd=jkcf 提取码: jkcf

相关文章:

Halcon例程代码解读:安全环检测(附源码|图像下载链接)

安全环检测核心思路与代码详解 项目目标 本项目的目标是检测图像中的安全环位置和方向。通过形状匹配技术,从一张模型图像中提取安全环的特征,并在后续图像中识别多个实例,完成检测和方向标定。 实现思路 安全环检测分为以下核心步骤&…...

Selenium 全面指南

Selenium 是一个强大的 Web 自动化工具,支持多种浏览器和语言绑定。 1. Selenium 的基本概念 WebDriver:Selenium 提供的核心接口,用于控制浏览器操作。显式等待:等待特定条件满足后再执行操作。隐式等待:全局设置一个…...

#error: WinSock.h has already been included解决方案

原因&#xff1a; 在工程中使用了 Boot 库之后&#xff0c;使用了socket、tcp 相关的头文件&#xff0c;在其他地方还是包括了头文件<windows.h>&#xff0c;该头文件内包含了<winsock.h>。导致遇到报错问题&#xff1a;WinSock.h has already been included 解决…...

2.Couchbase 的增量查询优化

在 Couchbase 中实现增量查询的优化是关键&#xff0c;尤其当数据量庞大时。通过合适的策略&#xff0c;可以显著提高增量查询的效率&#xff0c;确保系统在处理实时数据时的响应速度和性能。下面是一些针对 Couchbase 增量查询的优化策略。 1. 使用索引优化查询 为了提升增量…...

汽车IVI中控开发入门及进阶(46):FFmpeg

概述: FFmpeg 是领先的多媒体框架,能够解码、编码、 转码、复用、解复用、流、过滤和播放 几乎所有人类和机器创建的东西。它支持最模糊的古老格式,直到最前沿。无论它们是由某个标准委员会、社区还是公司设计的。它还具有高度的可移植性:FFmpeg 在各种构建环境、机器架构…...

Spring Boot 中的 @Scheduled 定时任务以及开关控制

Scheduled注解是Spring框架&#xff08;包括Spring Boot&#xff09;中用于实现定时任务的一种方式。以下是对Scheduled注解的详细解析&#xff1a; 一、基本概念 Scheduled注解允许开发者在Spring容器中定义定时任务。通过简单地在一个方法上添加Scheduled注解&#xff0c;S…...

服务器证书原理

CA&#xff08;Certificate Authority&#xff09;证书是由 证书颁发机构&#xff08;CA&#xff09;本身签名的。具体来说&#xff0c;这取决于 CA 的类型和其在信任链中的位置&#xff1a; 1. 自签名证书 根 CA 证书 是信任链的起点&#xff0c;由 CA 自己签名。它们是信任链…...

重温设计模式--代理、中介者、适配器模式的异同

文章目录 1、相同点2、不同点 1、相同点 目的都是为了更好地处理对象之间的关系&#xff1a;这三种模式都是在软件设计中用于处理对象之间的关联和交互&#xff0c;以达到优化系统结构、增强可维护性等目的。它们都在一定程度上隐藏了对象之间的某些细节或者复杂性&#xff0c…...

2024第十六届蓝桥杯模拟赛(第二期)-Python

# 2024第十六届蓝桥杯模拟赛&#xff08;第二期&#xff09;-Python题解 # 自己改注释# -----------------------1------------------------ # def prime(x): # if x < 2: # return 0 # for i in range(2, int(x ** 0.5) 1): # if x % i 0: # …...

分布式系统中的防抖策略一致性与性能优化

目录 引言分布式系统的挑战防抖策略简介确保多实例间一致性的方法 幂等操作TTL缓存 分布式一致性事件总线或消息队列异步任务调度器客户端或API网关层面的防抖一致性哈希与分区限流和熔断机制 避免锁竞争导致的性能瓶颈Java示例代码结论 引言 在现代软件架构中&#xff0c;…...

项目代码第6讲:UpdownController.cs;理解 工艺/工序 流程、机台信息;前端的“历史 警报/工艺 记录”

一、UpdownController.cs 1、前端传入 当用户在下图的“记录查询”中的 两个界面选项 中,点击“导出”功能时,向后端发起请求,请求服务器下载文件的权限 【权限是在Program.cs中检测的,这个控制器里只需要进行“谁在哪个接口下载了文件”的日志记录】 【导出:是用户把…...

【计算机视觉基础CV-图像分类】03-深度学习图像分类实战:鲜花数据集加载与预处理详解

本文将深入介绍鲜花分类数据集的加载与处理方式&#xff0c;同时详细解释代码的每一步骤并给出更丰富的实践建议和拓展思路。以实用为导向&#xff0c;为读者提供从数据组织、预处理、加载到可视化展示的完整过程&#xff0c;并为后续模型训练打下基础。 前言 在计算机视觉的深…...

大模型应用技术系列(一):大模型应用整体技术栈浅析

RAG相关的技术学习暂时告一段落了,接下来尝试探索新的学习方向。这就引入一个问题:接下来该做什么?为了能进一步推进,我需要有一个整体的视角,从更上层来看整个技术栈,从而确定接下来感兴趣的方向。本文主要探索从更上层的视角来看构建大模型的技术栈,从而进一步确定研究…...

绿色环保木塑复合材料自动化生产线设计书

《绿色环保木塑复合材料自动化生产线设计书》 一、项目概述 随着全球对环境保护和可持续发展的日益重视,绿色环保材料的研发与生产成为了热门领域。木塑复合材料作为一种新型的绿色环保材料,它将木材纤维与塑料通过特定工艺复合而成,兼具木材与塑料的双重特性,具有防水、…...

Sourcegraph 概述

Sourcegraph 报告 Sourcegraph 是一款强大的代码搜索和智能导航工具&#xff0c;专为大型代码库、分布式系统和跨多个仓库的开发环境设计。它能显著提高开发者对复杂系统的理解和维护效率&#xff0c;帮助团队在庞大的代码库中快速找到关键信息。本文将详细讲解 Sourcegraph 的…...

c 保存 csv格式的文件

在C语言中保存数据为CSV&#xff08;逗号分隔值&#xff09;格式的文件&#xff0c;你可以使用标准I/O库函数&#xff0c;如fprintf&#xff0c;来将数据写入文件&#xff0c;并确保每个字段之间用逗号分隔。以下是一个简单的示例&#xff0c;说明如何在C语言中创建一个CSV文件…...

C语言扫雷游戏教学(有图形界面)(提供源码+实验报告)(计时+排行榜+难度选择+登录注册+背景音乐)(涉及easyX库)

前言&#xff1a; 本篇文章篇幅较长&#xff0c;请根据自己的需求在目录上跳转对应内容哦&#xff01;源码及实验报告的获取在文章的后面哦&#xff01;本人代码水平不佳&#xff0c;希望本文章和项目能带给大家帮助&#xff01; 目录 前言&#xff1a; 一.成果预览&#x…...

第五节:GLM-4v-9b模型model加载源码解读(模型相关参数方法解读)

文章目录 前言一、GLM-4v-9b模型model加载源码解读1、GLM-4v-9b模型model加载主函数源码2、GLM-4v-9b模型model加载源码源码解读3、GLM-4v-9b自定义模型类源码解读 二、基于GLM-4v-9b模型获取模型输入参数等内容源码解读(from_pretrained-->huggingface)1、from_pretrained函…...

面试经验分享 | 北京渗透测试岗位

更多大厂面试经验的视频经验分享看主页 目录&#xff1a; 所面试的公司&#xff1a;安全大厂 所在城市&#xff1a;北京 面试职位&#xff1a;渗透测试工程师 面试方式&#xff1a;腾讯会议线上面试线下面试 面试过程&#xff1a; 面试官的问题&#xff1a; 1、说一下XSS有哪…...

unity Toggle制作滑动开关

先上效果图 重点是这个Graphic要清空,不然显示不能直接切换,会消失 using DG.Tweening; using UnityEngine; using UnityEngine.UI;public class SwitchToggle : MonoBehaviour {public RectTransform handleRect;public float duration 0.5f;private Vector2 handlePos;To…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好&#xff0c;欢迎来到《云原生核心技术》系列的第七篇&#xff01; 在上一篇&#xff0c;我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在&#xff0c;我们就像一个拥有了一块崭新数字土地的农场主&#xff0c;是时…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色&#xff0c;华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型&#xff0c;能助力我们轻松驾驭 DeepSeek-V3/R1&#xff0c;本文中将分享如何…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...

人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent

安全大模型训练计划&#xff1a;基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标&#xff1a;为安全大模型创建高质量、去偏、符合伦理的训练数据集&#xff0c;涵盖安全相关任务&#xff08;如有害内容检测、隐私保护、道德推理等&#xff09;。 1.1 数据收集 描…...

python爬虫——气象数据爬取

一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用&#xff1a; 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests&#xff1a;发送 …...