halcon 寻找圆 半径和圆心

本文介绍了一个详细的图像处理流程,从读取图片到最终计算出圆形区域的半径,包括灰度转换、高斯滤波、区域选择及形状转换等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

dev_close_window ()
dev_update_window ('off')
read_image (Image2, 'C:/Users/pei/Pictures/Saved Pictures/2.png')
rgb1_to_gray (Image2, GrayImage)
gauss_filter (GrayImage, ImageGauss, 7)
gen_rectangle1 (ROI_0, 61.5, 61.5, 270.5, 581.5)
reduce_domain (ImageGauss, ROI_0, ImageReduced)
roberts (ImageReduced, ImageRoberts, 'gradient_sum')
threshold (ImageRoberts, Regions, 0, 32)
connection (Regions, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 0, 90185.2)
shape_trans (SelectedRegions, RegionTrans, 'outer_circle')
* 可以将缺损的圆补全
area_center (RegionTrans, Area, Row, Column)
*计算半径  

Radius:=sqrt(Area/3.1415926)

### 使用Halcon实现形检测并确定其方向 在机器视觉领域,特别是对于特定形状的目标物如球形焊盘(ball bonding),能够准确地定位描述这些目标是非常重要的。为了完成这一任务,在Halcon中可以通过一系列操作来实现形检测以及确定的方向。 #### 加载示例程序 打开HDevelop环境中的`ball.hdev`文件,这是官方提供的用于检验焊接点质量的实例项目[^1]。此脚本已经包含了基本框架,可以直接在此基础上添加必要的代码片段来进行更详细的分析工作。 #### 形特征提取 要精确获取的信息,通常先执行预处理步骤以增强图像对比度或去除噪声干扰。接着采用适合的方法寻找潜在的形区域: - **边缘检测**:运用Sobel、Canny等算子突出显示边界位置[^2]。 ```cpp // 应用 Canny 算法进行边缘检测 canny_image (Image, EdgeImage, 1, 20, 'positive') ``` - **霍夫变换(Hough Transform)** 或者 `find_circles()` 函数直接查找可能存在的形轮廓。 ```cpp // 查找给定范围内的周 find_circles (EdgeImage, CircleRow, CircleColumn, CircleRadius, RadiusMin, RadiusMax) ``` 上述命令会返回所发现的所有符合条件的圆心坐标(`CircleRow`, `CircleColumn`)及其半径大小(`CircleRadius`)。 #### 计算方位角 一旦获得了具体的形参数之后,就可以进一步计算出该相对于某个固定参照系的角度信息——即所谓的“方向”。这一步骤涉及到几何学上的简单运算: 假设已知两个关键点的位置数据(比如最上方的一点A右侧一点B),那么这两个点之间的连线向量与水平轴正方向之间形成的夹角θ就是我们要找寻的方向角度。 ```cpp // 获取上两点坐标 get_circle_contour_xld(CircleHandle, StartPointX, StartPointY, EndPointX, EndPointY) // 计算两矢量间的夹角 vector_angle_to_radians([StartPointX, StartPointY], [EndPointX, EndPointY], AngleInRadians) ``` 最后得到的结果是以弧度表示的角度值;如果需要转换成度数形式,则需乘以\( \frac{180}{\pi} \)因子。 通过这种方式不仅可以确认物体是否为近似完美的形,还能得知它们是如何朝向摄像机镜头或其他参考平面的,这对于某些应用场景来说非常有用。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值