Halcon计算点到直线的垂线方程

一、我们都知道,点到直线最短距离就是垂线。Halcon也有现成的算子可以计算点到直线的距离
distance_pl( : : Row, Column, Row1, Column1, Row2, Column2 : Distance)。但是此算子不会返回具体的垂点坐标。当我们希望显示垂线的时候是需要知道垂点坐标,才可以绘制该直线的。
二、计算垂线方程代码

dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)

read_image (Image01, 'D:/01.png')
*画点
row_cross1:=287
col_cross1:=243
gen_cross_contour_xld (Cross, row_cross1 ,col_cross1 , 26, 0.785398)
*画直线
row1_Line1:=507
col1_Line1:=241
row2_Line1:=336
col2_Line1:=561
gen_region_line (RegionLines, row1_Line1, col1_Line1, row2_Line1, col2_Line1)
*计算直线与水平线的角度
angle_lx (row1_Line1, col1_Line1, row2_Line1, col2_Line1, Angle_Line1)
*计算与该直线垂直的直线的方程
angleH:=Angle_Line1
k:=tan(angleH)
b:=col_cross1-k*row_cross1
*任意给一个x坐标,计算y
xTest:=600
yTest:=k*xTest + b
*画垂线
gen_region_line (RegionLines1, row_cross1 ,col_cross1, xTest, yTest)
*计算直线与其垂线的夹角,验证是否是90度
angle_ll (row_cross1 ,col_cross1, xTest, yTest, row1_Line1, col1_Line1, row2_Line1, col2_Line1, Angle1)
*计算直线与垂线的交点
intersection_lines (row_cross1 ,col_cross1, xTest, yTest, row1_Line1, col1_Line1, row2_Line1, col2_Line1, Row, Column, IsOverlapping)
gen_cross_contour_xld (Cross1, Row, Column, 26, 0.785398)
*连接点与垂点
gen_region_line (RegionLines2, row_cross1 ,col_cross1, Row, Column)
*刷新显示
dev_set_line_width (5)
dev_display (Image01)
dev_set_color ('red')
dev_display (Cross)
dev_set_color ('green')
dev_display (Cross1)
dev_set_color ('blue')
dev_display (RegionLines2)
dev_set_color ('orange')
dev_display (RegionLines)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值