4.Halcon根据霍夫变换在图像中寻找直线

文章介绍了如何利用霍夫变换和Halcon库在图像中检测矩形和直线,包括读取和剪切图像、边缘检测、阈值处理、连通区域选择以及霍夫变换的具体参数设置和应用过程。
摘要由CSDN通过智能技术生成

霍夫变换可以用来识别几何形状。如圆,随圆,直线等等


*读取一张图像
read_image (Image, 'D:/BaiduNetdiskDownload/026Halcon视频资料学习/3.Halcon 视频教程/视频/Halcon视频配套资料/Halcon算子视频配套资料/根据霍夫变换在图像中寻找直线/矩形')

get_image_size (Image, Width, Height)

dev_open_window (0, 0, Width, Height, 'black', WindowHandle)

*剪切指定矩形的图像
*将图像的域(ROI)缩小到矩形。
*Image 输入的图像
*ImageReduced 剪切后输出的区域
*Row1, Column1 指定矩形左上角坐标
*Row2, Column2 指定矩形右下角坐标
rectangle1_domain (Image, ImageReduced, 76, 120.938, 464.875, 966.813)

* 寻找图像中矩形的边缘,检测边缘(幅度)
*ImageReduced 输入参数,在哪里找矩形
*EdgeAmplitude 输出参数 返回找到的矩形
*FilterType 滤波器方式 默认值:‘sum_abs’
*值列表:‘sum_abs’,‘sum_abs_binomial’,‘sum_sqrt’,‘sum_sqrt_binomial’,‘thin_max_abs’,‘thin_max_abs_binomial’,‘thin_sum_abs’,‘thin_sum_abs_binomial’,‘x’,‘x_binomial’,‘y’,'y_binomial “                     
*原文链接:https://blog.csdn.net/WarGames_dc/article/details/96270252
*Size 滤波掩膜的大小,默认值:3,值列表:3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39
sobel_amp (ImageReduced, EdgeAmplitude, 'thin_sum_abs', 3)

* 设置输出对象颜色
dev_set_color ('red')

*对上面获取的边缘图像进行阈值操作
*全局阈值,固定阈值
threshold (EdgeAmplitude, Region, 10, 255)

* 对阈值后的区域进行连通处理
connection (Region, ConnectedRegions)

*根据面积过滤出图像中 外矩形区域
*选择区域 根据面试选择了2500, 99999范围的矩形
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 2500, 99999)

*霍夫变换来寻找区域中的直线
*借助Hough变换检测边缘图像中的线条
*参数说明
*RegionIn 输入参数 要检测线条的区域,二值化边缘图像
*AngleResolution 调整角度区域的分辨率,角度的步进,步进大小。 默认值:4 值列表:1,2,4,8
*Threshold 霍夫图像中的阈值,要寻找的直线的阈值。 默认值:100 典型值范围:2≤阈值
*AngleGap 霍夫图像中两个最大值的最小距离(方向:角度)默认值:5 典型值范围:0≤AngarGap
*DistGap 霍夫图像中两个最大值的最小距离(方向:距离)默认值:5 典型值范围:0≤DistGap
*Angle (输出参数)检测到的线的角度(以弧度表示)典型值范围:-1.5707963≤角度≤3.1415927
*Dist (输出参数)检测到的线与原点的距离 元素数量:Dist == Angle 典型值范围:0≤Dist
hough_lines (SelectedRegions, 4, 50, 5, 5, Angle, Dist)

*设置输出对象的颜色
dev_set_color ('blue')

*将直线转换为区域
*绘制霍夫变换提取直线
*将霍夫变换提取直线以普通形式描述的输入行存储为区域
*参数说明
*Regions (输出)创建的区域
*Angle (输入)霍夫变换输出的角度
*Dist (输入)线与原点的距离
gen_region_hline (Regions, Angle, Dist)

* 根据方向特征来过滤想要的直线
*
select_shape (Regions, SelectedRegions1, 'orientation', 'and', 1.5, 1.6)
*上下两行线 是平行线,所以值X轴的角度在0-0.1之间
select_shape (Regions, SelectedRegions2, 'orientation', 'and', 0, 0.1)

* 显示图像和结果直线
dev_display (Image)
dev_display (SelectedRegions1)
dev_display (SelectedRegions2)

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

StevenChen85

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值