halcon在视窗上的简单操作(线)

By admin at 2018-02-01 • 0人收藏 • 731人看过

画一条线:

disp_line — Draws lines in a window.

dev_close_window ()
dev_open_window (0, 0, 512, 512, 'white', WindowID)
RowA1 := 255
ColumnA1 := 10
RowA2 := 255
ColumnA2 := 501
dev_set_color ('red')
disp_line (WindowID, RowA1, ColumnA1, RowA2, ColumnA2)

blob.png

那么我们画一个四方块吧:(就是画四条相接的线段)

/* Display contour of a rectangle */
disp_rectangle1_margin(Hlong WindowHandle,
                       Hlong Row1, long Column1,
                       Hlong Row2, long Column2)
{
  disp_line(WindowHandle,Row1,Column1,Row1,Column2) ;
  disp_line(WindowHandle,Row1,Column2,Row2,Column2) ;
  disp_line(WindowHandle,Row2,Column2,Row2,Column1) ;
  disp_line(WindowHandle,Row2,Column1,Row1,Column1) ;
}


3 个回复 | 最后更新于 2018-02-03
2018-02-02   #1
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
RowA1 := 255
ColumnA1 := 10
RowA2 := 255
ColumnA2 := 501
gen_contour_polygon_xld (Contour, [RowA1,RowA2], [ColumnA1,ColumnA2])
RowB1 := 255
ColumnB1 := 255
for I := 5 to 360 by 5
  RowB2 := 255 - sin(rad(I)) * 200
  ColumnB2 := 255 + cos(rad(I)) * 200
  gen_contour_polygon_xld (Contour, [RowB1,RowB2], [ColumnB1,ColumnB2])
  angle_ll (RowA1, ColumnA1, RowA2, ColumnA2,\
            RowB1, ColumnB1, RowB2, ColumnB2, Angle)
  AngleDeg := deg(Angle)
endfor

画一条线:

gen_contour_polygon_xld (Contour, [RowA1,RowA2], [ColumnA1,ColumnA2])

计算两条线之间的角度(弧度):

angle_ll (RowA1, ColumnA1, RowA2, ColumnA2,\
            RowB1, ColumnB1, RowB2, ColumnB2, Angle)

弧度转角度:

AngleDeg := deg(Angle)


2018-02-02   #2
* Calculate the distances between one line segment and one line
* 
dev_close_window ()
dev_open_window (0, 0, 512, 512, 'white', WindowID)
dev_set_color ('black')
RowLine1 := 400
ColLine1 := 200
RowLine2 := 200
ColLine2 := 400
Rows := 300
Columns := 50
disp_line (WindowID, RowLine1, ColLine1, RowLine2, ColLine2)
dev_set_color ('green')
n := 0
for Rows := 40 to 200 by 4
    distance_sl (Rows + n, Columns + n, Rows, Columns + n, RowLine1, ColLine1, RowLine2, ColLine2, DistanceMin, DistanceMax)
    if (DistanceMin <= 0)
        dev_set_color ('green')
    else
        dev_set_color ('red')
    endif
    disp_line (WindowID, Rows + n, Columns + n, Rows, Columns + n)
    n := n + 10
endfor

计算两根线之间的最小和最大距离:

distance_sl (Rows + n, Columns + n, Rows, Columns + n, RowLine1, ColLine1, RowLine2, ColLine2, DistanceMin, DistanceMax)

返回的是最小和最大的距离

以上代码是如果两根线最小距离小于0即:如果两根线相交,那么就设为绿色,上述代码有个bug,最后一根没相交的也是绿色的....

blob.png

2018-02-03   #3

distance_lr()

计算直线和区域之间的距离,返回最小和最大距离

distance_pc()

计算点到轮廓的最大距离和最小距离

distance_pl()

计算点到直线的垂直距离

distance_ss()

计算两线段之间的距离,返回最大和最小值

distance_pp()

计算一个点到另外一个点的距离


登录后方可回帖

登 录
信息栏
本站永久域名:HtmLayout.Cn
纯私人站,当笔记本用的,学到哪写到哪,目前正在学aardio+halcon机器视觉.
Sciter中文在线文档Sciter在线学习文档
本 站 主 站:Stm32cube中文网
Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
aardio在线手册Aardio在线手册
C大Aardio论坛:Aar爱好者论坛
简码教程网:简码编程
AARDIO语言QQ群:70517368
赞助商:才仁机械
下载站:非凡软件站
Loading...