【issue-halcon例程学习】edges_color.hdev

例程功能

 演示如何使用edges_color,展示只能从彩色图像中提取某些边缘的图像,说明edges_coloredges_image输出之间的差异。

代码如下

dev_update_off ()
read_image (Image, 'olympic_stadium')
get_image_size (Image, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
dev_set_part (0, 0, Height - 1, Width - 1)
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
dev_display (Image)
Message := 'Color image'
disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')
stop ()
* Convert the color image to a gray value image.  Note that there is no contrast
* between the soccer field and the track in the gray value image.
rgb1_to_gray (Image, GrayImage)
dev_display (GrayImage)
Message := 'Gray value image'
disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')
stop ()
* Compute the color edges without non-maximum suppression and hysteresis
* thresholding, i.e., the raw edge amplitude image.  Note that there is a clearly
* visible edge between the soccer field and the track in the color edge image.
edges_color (Image, ImaAmp, ImaDir, 'canny', 1, 'none', -1, -1)
dev_display (ImaAmp)
Message := 'Color edge image'
disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')
stop ()
* Compute the gray value edges without non-maximum suppression and
* hysteresis thresholding, i.e., the raw edge amplitude image.  Note that there is
* no visible edge between the soccer field and the track in the gray value edge
* image.
edges_image (GrayImage, ImaAmpGray, ImaDirGray, 'canny', 1, 'none', -1, -1)
dev_display (ImaAmpGray)
Message := 'Gray value edge image'
disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')
stop ()
* Now perform the color edge extraction including non-maximum suppression
* and hysteresis thresholding.  Note the segmented edge between the soccer
* field and the track.
edges_color (Image, ImaAmpHyst, ImaDirHyst, 'canny', 1, 'nms', 20, 40)
threshold (ImaAmpHyst, RegionColor, 1, 255)
skeleton (RegionColor, EdgesColor)
dev_display (Image)
dev_set_color ('blue')
dev_display (EdgesColor)
Message := 'Segmented color edges'
disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')
stop ()
* Now perform the gray value edge extraction including non-maximum
* suppression and hysteresis thresholding.  Note the absence of an edge
* between the soccer field and the track.
edges_image (GrayImage, ImaAmpGrayHyst, ImaDirGrayHyst, 'canny', 1, 'nms', 20, 40)
threshold (ImaAmpGrayHyst, RegionGray, 1, 255)
skeleton (RegionGray, EdgesGray)
dev_display (GrayImage)
dev_set_color ('blue')
dev_display (EdgesGray)
Message := 'Segmented gray value edges'
disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')
stop ()
* Now display everything again, while only showing the part of the image
* containing the soccer field and the track.
Row1 := 220
Col1 := 215
Row2 := 399
Col2 := 489
dev_set_part (Row1, Col1, Row2, Col2)
dev_display (Image)
stop ()
dev_display (GrayImage)
stop ()
dev_display (ImaAmp)
stop ()
dev_display (ImaAmpGray)
stop ()
dev_display (Image)
dev_set_color ('blue')
dev_display (EdgesColor)
stop ()
dev_display (GrayImage)
dev_set_color ('blue')
dev_display (EdgesGray)

要点

  1. 例程中着重说明图像中足球场和跑道两个区域间几乎没有对比度。以此为难点分别用edges_coloredges_image分割图像边缘。
    没有对比度意味着灰度化后足球场和跑道区域间边缘特征不明显(看起来像一块区域),后接edges_image 确实没有检测出足球场边框。
    edges_color直接对彩色图像进行边缘提取,效果会好于edges_image方法。两个算子的参数相同,不同点在于入参图像分别为彩色图像和灰度图像。
    edges_color——使用 Deriche、Lanser、Shen 或 Canny 过滤器提取边缘;
    Image ——入参,待处理图像;
    ImaAmp ——出参,边缘幅度(梯度)分割结果;
    ImaDir ——出参,边缘方向分割结果;
    Filter ——入参,过滤器;
    Alpha ——入参,滤镜参数(值越小,平滑效果越强,细节越少,canny算子相反);
    NMS ——入参,极大值抑制;
    Low ——入参,滞后阈值分割的低阈值(不需要则置negative);
    High ——入参,滞后阈值分割的高阈值(不需要则置negative);

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于在微信小程序中使用taro + react-hook后销毁函数无法执行的问题

问题: 在 taro中使用navigageTo() 跳转路由后hook中useEffect 的return函数没有执行 没有执行return函数 框架版本: tarojs: 3.6 react: 18.0 原因: 使用navigateTo() 跳转路由的话并不会销毁页面和组件,会加入一…

性能优化-OpenCL运行时API介绍

「发表于知乎专栏《移动端算法优化》」 本文首先给出 OpenCL 运行时 API 的整体编程流程图,然后针对每一步介绍使用的运行时 API,讲解 API 参数,并给出编程运行实例。总结运行时 API 使用的注意事项。最后展示基于 OpenCL 的图像转置代码。在…

L1-093 猜帽子游戏(Java)

宝宝们在一起玩一个猜帽子游戏。每人头上被扣了一顶帽子,有的是黑色的,有的是黄色的。每个人可以看到别人头上的帽子,但是看不到自己的。游戏开始后,每个人可以猜自己头上的帽子是什么颜色,或者可以弃权不猜。如果没有…

17β-Estradiol high sensitivity ELISA kit

高灵敏ELISA试剂盒,可检测到低至14 pg/ml的17β-雌二醇 雌二醇(estradiol) 是由卵巢内卵泡的颗粒细胞分泌的类固醇激素,是主要的雌激素,负责调节女性特征、附属性器官的成熟和月经-排卵周期,促进乳腺导管系统的产生,有…

JanusGraph图数据库的应用以及知识图谱技术介绍

目录 JanusGraph介绍 JanusGraph 的主要优势 JanusGraph的应用: JanusGraph 的行业应用: 架构概览 分布式技术应用 横向扩展能力 程序与janus的交互 Janus与图数据库相关概念 结构化存储 图结构存储 实体关系存储 知识存储技术 JanusGraph介…

软考案例分析题万金油汇总

目录 二、范围管理存在的问题 三、变更管理可能存在的问题 四、招标问题 五、风险管理可能存在的问题 六、采购管理中存在的问题 七、配置管理可能出现的问题 八、配置管理混乱和配置管理相关案例回答 九、项目收尾可能存在的问题 十、人力资源管理存在的问题 十一、…

【MySQL】体系结构

文章目录 体系结构图存储引擎查询建表语句查看当前数据库可支持的存储引擎InnoDB逻辑存储结构架构内存结构磁盘结构体系结构图 体系结构说明 连接层 最上层是一些客户端和链接服务,主要完成一些类似于连接处理、授权认证、及相关的安全方案。服务器也会为安全接入的每个客户端…

【大数据精讲】全量同步与CDC增量同步方案对比

目录 背景 名词解释 问题与挑战 FlinkCDC DataX 工作原理 调度流程 五、DataX 3.0六大核心优势 性能优化 背景 名词解释 CDC CDC又称变更数据捕获(Change Data Capture),开启cdc的源表在插入INSERT、更新UPDATE和删除DELETE活动时…

08-微服务Seata分布式事务使用

一、分布式事务简介 1.1 概念 事务ACID: A(Atomic):原子性,构成事务的所有操作,要么都执行完成,要么全部不执行,不可能出现部分成功部分失 败的情况。 C(Consistency&…

代码随想录算法训练营day14|二叉树的遍历

理论基础 递归遍历 迭代遍历 统一迭代 理论基础 需要了解 二叉树的种类,存储方式,遍历方式 以及二叉树的定义 文章讲解:代码随想录 递归遍历 (必须掌握) 二叉树的三种递归遍历掌握其规律后,其实很简单 …

ubuntu附加驱动 全部灰色,无法点击

使用命令下载:参考:解决nvidia-smi报错:NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver.-CSDN博客

npm install运行报错npm ERR! gyp ERR! not ok问题解决

执行npm install的时候报错: npm ERR! path D:..\node_modules\\**node-sass** npm ERR! command failed ...npm ERR! gyp ERR! node -v v20.11.0 npm ERR! gyp ERR! node-gyp -v v3.8.0 npm ERR! gyp ERR! not ok根据报错信息,看出时node-sass运行出现…

写点东西《检查和更新NPM包》

写点东西《检查和更新NPM包》 检查和更新 NPM 包 TL;DR; 用于检查和更新软件包的 NPM 命令# [](#npm-outdated)npm outdatednpm updatenpm update --save-dev --savenpm update -g npm-check-updates 检查和更新软件包的命令npm install -g npm-check-updatesnpx np…

Idea Community社区版如何添加Run Dashboard

最近在学习spring cloud,跟着视频添加run dashboard,发现里面介绍的方法无法适用于idea community(社区版)。 然后自己研究了一下,成功添加,下面分享自己的方法。 如图,我的项目里添加了两个module,我想通…

kubeadm部署k8s1.27.2版本高可用集群(外部etcd集群带TLS认证)

文章目录 环境软件版本服务器系统初始化etcd 证书生成etcd集群部署负载均衡器部署部署k8s集群部署网络组件FAQ 环境 控制平面节点主机的配置最少是2C2G,否则kubeadm init的时候会报错 主机名IP组件系统os128192.168.177.128etcd、kube-apiserver、kube-controller-manager、k…

Cesium for Unity包无法加载

太上老君急急如律⚡令⚡ 🥙关闭UnityHub🧀启动梯子🥪cmd 启动UnityHub 🥙关闭UnityHub 🧀启动梯子 🥪cmd 启动UnityHub 把批处理启动文件👈中的exe的路径换成自己的安装目录!保存…

前端项目对接protobufjs的时候,踩坑总结

Protobuf(Protocol Buffers)是一种用于序列化结构化数据的语言无关、平台无关、可扩展的机制。在JS/TS项目中,使用WebSocket与Protobuf可以实现高效的通信和数据传输。protobufjs官方仓库:https://github.com/protobufjs/protobuf.js 安装pro…

SpringBoot-多数据源切换和事物处理(免费)

作者原始文章: SpringBoot-多数据源切换和事物处理 最新内容和改动请看上面的文章 安装 <dependency><groupId>com.gitee.huanminabc</groupId><artifactId>dynamic-datasource</artifactId><version>1.0.3-RELEASE</version> <…

算法训练day21Leetcode530二叉搜索树的最小绝对差501二叉搜索中的众数236二叉树最近公共祖先

530 二叉搜索树的最小绝对差 题目描述 https://leetcode.cn/problems/minimum-absolute-difference-in-bst/description/ 我的想法 中序遍历二叉树存入数组&#xff0c;再遍历数组求节点之间的最小差值 我的acm模式代码 #include <iostream> #include <vector&g…

几款提高开发效率的Idea 插件

1、ignore 开发代码过程中经常会有一些需要提交到代码仓库的文件&#xff0c;比如java文件生成的.class、.jar 等&#xff0c;如果将编译后的文件都提交到代码库那么代码库会很大&#xff0c;关键是没有必要。 这款插件就可以很方便的解决某类文件或者某个文件夹不需要提交到…