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

【halcon】裁剪

前言

目前我遇到的裁剪相关的函数都是以clip打头的函数。一共4个:

  1. clip_end_points_contours_xld
  2. clip_contours_xld
  3. clip_region
  4. clip_region_rel

前面两个是对轮廓的裁剪。
后面是对区域的裁剪。

裁剪轮廓的两端

clip_end_points_contours_xld 用于实现裁剪XLD(Extended Line Description)轮廓的两端
以下是对这个操作符的详细说明:

描述

ClipEndPointsContoursXld 操作符用于裁剪 XLD 轮廓的端点。参数 mode 确定了用于确定裁剪哪部分轮廓的测量方式。

  • 如果 mode = "length",则通过参数 length 传递要裁剪部分的像素点。
  • 如果 mode = "num_points",则通过参数 num_points 传递要裁剪的点数。

裁剪后的轮廓将保存在 clippedContours 中。如果裁剪了输入轮廓的所有点,将不返回任何轮廓。因此,返回的轮廓数少于或等于输入轮廓的数量。

参数

  • contours(输入对象):输入轮廓。
  • clippedContours(输出对象):裁剪后的轮廓。
  • mode(输入控制):裁剪模式。可选值为 “length” 或 “num_points”。
  • length(输入控制):裁剪长度,单位为像素(mode = "length")或点数(mode = "num_points")。

这里唯一不好理解的是轮廓的点数,我如何知道轮廓是由多个少个点构成的

我们可以借助算子 get_contour_xld 获取具体的轮廓点集,然后通过 gen_cross_contour_xld 点集具现化。

get_contour_xld (SelectedContours, Row, Col)
gen_cross_contour_xld (Cross, Row, Col, 1, 0.785398)

在这里插入图片描述
这里就很容易理解点和像素的关系了, “length” 和 “num_points” 这两种模式也很好理解了!
可以看到点是亚像素的,他的分布是不均均匀的。也进一步看到,轮廓的本质是点集合

示例

以下是使用 ClipEndPointsContoursXld 的一个简单示例:

// 创建输入轮廓
HObject contours;
GenCircleContourXld(out contours, 100, 100, 50, 0, 6.28318, "positive", 1.0);// 定义裁剪模式和长度
HTuple mode = "length";
HTuple length = 20.0;// 调用 ClipEndPointsContoursXld 进行裁剪
HObject clippedContours;
HOperatorSet.ClipEndPointsContoursXld(contours, out clippedContours, mode, length);

在这个例子中,输入轮廓是一个圆,裁剪模式为 “length”,裁剪长度为 20.0 像素。裁剪后的轮廓将保存在 clippedContours 中。

按矩形区域裁剪轮廓

clip_contours_xld 就看这张图就不用过多的解释了
在这里插入图片描述

按矩形区域裁剪区域

clip_region 这个是针对区域的,思路和 clip_contours_xld 一致。

相对区域裁剪

clip_region_rel 这个是针对区域的,和 clip_end_points_contours_xld 思路有些类似。
clip_region_rel (这里的rel 是 relative “相对的” 的缩写),这里也给出一张图。
在这里插入图片描述
也就说,可以将现有的区域切割,切割反向可以是上下左右。
在这里插入图片描述
这是函数还是挺有用的。

小结

这些是对halcon 裁剪相关算子的总结,我们下次见~~~

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

相关文章:

  • vue+less+style-resources-loader 配置全局颜色变量
  • 第二次量子化
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • 【代码】多种调度模式下的光储电站经济性最优 储能容量配置分析matlab/yalmip
  • 深度学习今年来经典模型优缺点总结,包括卷积、循环卷积、Transformer、LSTM、GANs等
  • ChatGPT成为“帮凶”:生成虚假数据集支持未知科学假设
  • c#利用Forms.Timer定时检测Tcp连接状态
  • 空间注意力:改变我们理解图像的方式
  • 【模型报错记录】‘PromptForGeneration‘ object has no attribute ‘can_generate‘
  • mysql学习记录
  • Hdoop学习笔记(HDP)-Part.11 安装Kerberos
  • 浅谈UML的概念和模型之UML九种图
  • 杨志丰:OceanBase助力企业应对数据库转型深水区挑战
  • 版本控制系统Git学习笔记-Git分支操作
  • 分布式系统中最基础的 CAP 理论及其应用
  • 计算机视觉(OpenCV+TensorFlow)
  • shell语法
  • JAXB的XmlAttribute注解
  • 【代码】基于改进差分进化算法的微电网调度研究matlab
  • 计算机基础知识63
  • springboot虚拟请求——测试
  • 计算机视觉各个方向概述
  • AIGC: 关于ChatGPT中API接口调用相关准备工作
  • 【Java Web学习笔记】 1 - HTML入门
  • 基于windows系统使用Python对于pc当前的所有窗口的相关操作接口
  • 30秒搞定一个属于你的问答机器人,快速抓取网站内容
  • JPA数据源Oracle异常记录
  • 抽奖送平板是骗局!!!
  • json.decoder.JSONDecodeError: Extra data: line 1 column 332 (char 331)
  • rust持续学习 COW