Halcon机器视觉实战----提取水平方向缝隙区域

前言

如何从一块区域内找到水平方向的缝隙区域(不是高斯线条,从图像中提取,而是从区域内提取,考虑到了区域所在的方向);

dev_close_window ()
dev_open_window (0, 0, 800, 800, 'black', WindowHandle)
read_image (Image, 'C:/Users/MI/Desktop/1.jpg')
rgb1_to_gray (Image, Image)
***动态阈值分割
binary_threshold (Image, Regions, 'max_separability', 'light', UsedThreshold)
fill_up (Regions, Regions)
***显示过滤后的区域
dev_display (Image)
dev_display (Regions)
****区域的开闭运算
*开运算,看起来两个细微连接的区域分开了,不会扩展区域边界外部部分,只会更改区域内部的连接处,和腐蚀不一样
*闭运算,看起来两个细微连接的区域结合了,不会扩展区域边界外部部分,只会更改区域内部的连接处,和膨胀不一样
***这个算子的思路是改变滤波核形状,水平方向上扩展了一个像素,竖直方向上扩展了十个像素
closing_rectangle1 (Regions, RegionClosing, 1, 10)

*****区域作差,这样,就找到了特定的,区域内部的连接处
difference (RegionClosing, Regions, RegionDifference)


*****分割区域
connection (RegionDifference, ConnectedRegions)
*****去噪
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 50, 99999)
*此时噪点过多,需要进一步提取主要方向上的特征
*缝隙的特点是狭长,最好实现的方法是提取区域骨骼
skeleton (SelectedRegions, Skeleton)

*****生成轮廓
gen_contours_skeleton_xld (Skeleton, Contours, 1, 'filter')
*连接轮廓,此时的轮廓线还不是一条直线
union_adjacent_contours_xld (Contours, UnionContours, 70, 1, 'attr_keep')
***显示过滤后的区域
dev_display (Image)
dev_display (UnionContours)

***对特定的直线拟合,
count_obj (UnionContours, Number)
gen_empty_obj (lines)
for Index := 1 to Number by 1
    select_obj (UnionContours, ObjectSelected, Index)
    *把不是直线的轮廓线拟合成直线
    fit_line_contour_xld (ObjectSelected, 'tukey', -1, 0, 5, 2, RowBegin, ColBegin, RowEnd, ColEnd, Nr, Nc, Dist)
    concat_obj (ObjectSelected, lines, lines)
endfor

***显示拟合后的直线
dev_display (Image)
dev_display (lines)

成像效果

原图

在这里插入图片描述
效果图

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/376495.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

揭秘海外云手机的诸多优势

在电商领域,相信越来越多人听到“海外云手机”一词。尽管我们熟悉智能手机,但“云手机”到底是什么?它是如何在没有实体形态或SIM卡的情况下存在的呢?实际上,海外云手机相当于您放在国外的虚拟手机。本文将深入探讨这一…

详解洛谷P2912 [USACO08OCT] Pasture Walking G(牧场行走)(lca模板题)

题目 思路 一道模板题&#xff0c;没啥好说的&#xff0c;直接见代码 代码 #include <bits/stdc.h> using namespace std; int n,q,a,to[100001][22],b,deep[100001],c,t[1000001]; struct ff {int id,len; }; vector<ff> vec[100001]; void dfs(int x,int fa,i…

STM32搭建开发环境

常用开发工具简介 集成开发环境 MDK&#xff1a;全名RealViewMDK&#xff0c;是Keil公司&#xff08;已被ARM收购的&#xff09;一款集成开发环境&#xff0c;界面美观&#xff0c;简单易用&#xff0c;是STM32最常用的集成开发环境EWARM&#xff1a;IAR公司的一款集成开发环…

Qt 常见容器类用法(二)

目录 QList类 QLinkedList类 QList类 对于不同的数据类型&#xff0c;QList<T>采取不同的存储策略&#xff0c;存储策略如下&#xff1a; 如果T是一个指针类型或指针大小的基本数据类型(该基本类型占有的字节数和指针类型占有的字节数相同)&#xff0c;QList<T>…

【Git版本控制 03】远程操作

目录 一、克隆远程仓库 二、推送远程仓库 三、拉取远程仓库 四、忽略特殊文件 五、命令配置别名 一、克隆远程仓库 Git是分布式版本控制系统&#xff0c;同⼀个Git仓库&#xff0c;可以分布到不同的机器上。怎么分布呢&#xff1f; 找⼀台电脑充当服务器的⻆⾊&#xff…

2024技术趋势:未来是怎样的?Mendix大咖给你解答

智能空间、 混合区块链、 数字加密货币、 云平台、 无人机、 生成型人工智能、 人工智能代理、 扩展现实&#xff08;XR&#xff09;、 边缘计算、 智能自动化、 网络安全、 量子机器学习、 物联网&#xff08;IoT&#xff09;连接、 可持续的IT。 他们都有什么共同点&#xf…

RSA算法加密、签名和验签、解密

一、背景介绍 RSA是一种非对称加密算法&#xff0c;该加密算法的原理就是对一极大整数做因数分解的困难性来保证安全性。通常个人保存私钥&#xff0c;公钥是公开的&#xff08;可能同时多人持有&#xff09;。 二、RSA算法工具类 package com.hl.rsademo.util;import java.i…

HubSpot x 小红书:MessageBox打破数据壁垒

在当今数字营销的快速发展环境中&#xff0c;企业面临着将多个系统平台整合在一起以实现更有效营销策略的挑战。然而&#xff0c;随着技术的不断进步&#xff0c;诸如MessageBox这样的工具正在成为解决这一挑战的关键。MessageBox作为一种能够对接多个系统平台的工具&#xff0…

第二证券:大涨5%,这一指数爆发!

A股商场今日上午进一步上行&#xff0c;各大指数持续上涨&#xff0c;其间上证指数克复2800点。小市值股票体现更佳&#xff0c;中证1000指数上午大涨5%。 港股商场方面&#xff0c;今日上午一度大幅上涨&#xff0c;后涨幅有所回落。港股百胜我国今日上午体现抢眼&#xff0c…

动态扩缩容下的全局流水号设计

关于全局流水号&#xff0c;业内用的比较多的就是雪花算法&#xff0c;一直没理解在动态扩缩容下其中的workId和 datacenterId如何设置&#xff0c;查到了几个方法&#xff1a;reidis中取&#xff0c;待后期实践下。 先简单的介绍一下雪花算法&#xff0c;雪花算法生成的Id由…

datax离线同步oracle表到clickhouse实践1

时间&#xff1a;2024.01 目录1、安装启动 oracle19c 容器 2、rpm包安装clickhouse 3、datax安装 4、datax同步 目标库根据要同步的表&#xff0c;按照clickhouse建表规范建表 编写json文件 编写增量同步shell脚本&#xff0c;加入 crond 定时任务 1、安装启动 oracle19c 容器…

SpringBoo+Vue构建简洁日志文件查看系统

点击下载《SpringBooVue构建日志文件查看系统&#xff08;源代码&#xff09;》 1. 前言 想必经常做java开发的小伙伴&#xff0c;其大多数服务都是运行在linux系统上的&#xff0c;当遇到一些比较棘手的bug需要处理时&#xff0c;经常要上服务器去捞日志&#xff0c;然后通过…

Python循环语句——for循环的基础语法

一、引言 在Python编程的世界中&#xff0c;for循环无疑是一个强大的工具。它为我们提供了一种简洁、高效的方式来重复执行某段代码&#xff0c;从而实现各种复杂的功能。无论你是初学者还是资深开发者&#xff0c;掌握for循环的用法都是必不可少的。在本文中&#xff0c;我们…

Spring Web Body 转化常见错误

在 Spring 中&#xff0c;对于 Body 的处理很多是借助第三方编解码器来完成的。例如常见的 JSON 解析&#xff0c;Spring 都是借助于 Jackson、Gson 等常见工具来完成。所以在 Body 处理中&#xff0c;我们遇到的很多错误都是第三方工具使用中的一些问题。 真正对于 Spring 而…

2641. 二叉树的堂兄弟节点 II - 力扣(LeetCode)

题目描述 给你一棵二叉树的根 root &#xff0c;请你将每个节点的值替换成该节点的所有 堂兄弟节点值的和 。 如果两个节点在树中有相同的深度且它们的父节点不同&#xff0c;那么它们互为 堂兄弟 。 请你返回修改值之后&#xff0c;树的根 root 。 注意&#xff0c;一个节…

《Java程序设计》实验报告(三)之常用类和集合类

实验内容及步骤&#xff1a; 编写String类的程序。&#xff08;1&#xff09;代码&#xff1a; public class TeatString3 { public static void main(String[] args) { String str"abcd"; System.out.print("将字符串转换为字符数组后…

Text2SQL研究-Chat2DB体验与剖析

文章目录 概要业务数据库配置Chat2DB安装设置原理剖析 小结 概要 近期笔者在做Text2SQL的研究&#xff0c;于是调研了下Chat2DB&#xff0c;基于车辆订单业务做了一些SQL生成验证&#xff0c;有了一点心得&#xff0c;和大家分享一下.&#xff1a; 业务数据库设置 基于车辆订…

腾讯云游戏联机服务器配置价格表,4核16G/8核32G/4核32G/16核64G

2024年更新腾讯云游戏联机服务器配置价格表&#xff0c;可用于搭建幻兽帕鲁、雾锁王国等游戏服务器&#xff0c;游戏服务器配置可选4核16G12M、8核32G22M、4核32G10M、16核64G35M、4核16G14M等配置&#xff0c;可以选择轻量应用服务器和云服务器CVM内存型MA3或标准型SA2实例&am…

BATSIGN 世界上最简单的个人电子邮件通知 API

引言 今天看邮箱&#xff0c;发现有封邮件&#xff0c;在垃圾箱&#xff0c;看了一眼挺真诚的不是骗子&#xff0c;应该是应用者进行宣传什么的&#xff0c;也挺不容易的。 注意&#xff1a;基于安全反欺诈宣传这类链接一般不要随便点&#xff0c;以免造成财产物品损失。 试用…

[linux]-总线,设备,驱动,dts

1. 总线BUS 在物理层面上&#xff0c;代表不同的工作时序和电平特性&#xff1a; 总线代表着同类设备需要共同遵守的工作时序&#xff0c;不同的总线对于物理电平的要求是不一样的&#xff0c;对于每个比特的电平维持宽度也是不一样&#xff0c;而总线上传递的命令也会有自己…
最新文章