[Halcon几何] 矩形顶点和对角连线角度计算
描述:因为halcon中算子求的矩形角度有时候不是我所需要的角度,以算子smallest_rectangle2为例:
1)其获取的矩形角度范围- 90< angle <= 90,即无论通过算子gen_rectangle2生成的Region角度多大,smallest_rectangle2获取的角度都不会超出这个范围。
2)算子smallest_rectangle2输出的角度是通过计算Region长轴与X轴正方向夹角获取,且角度不能超出限定范围。
这就会导致一个问题,由于我的得到的矩形长轴方向不是固定的,如果长轴是水平方向的,得到的矩形角度就在0°上下波动,如图红色区域部分:
如果长轴是竖直方向的,得到的矩形角度就在90°下或-90°上波动(因为- 90< angle <= 90,矩形垂直是90°。矩形区域逆时针旋转1°,并不是91°,而是-89°),如图红色区域部分:
所以,我通过计算矩形四个顶点,然后利用左上顶点与右下顶点的连线与X轴正方向的夹角来作为矩形的角度。具体算法如下:
一、求矩形四个顶点
gen_empty_obj (EmptyCross)
smallest_rectangle2_xld (outContour, Row1, Column1, Phi3, Length1, Length2)
gen_rectangle2_contour_xld (Rectangle, Row1, Column1, Phi3, Length1, Length2)
tuple_cos (Phi3, Cos)
tuple_sin (Phi3, Sin)
dev_set_color('green')
a:= -Length1*Cos - Length2*Sin
b := -Length1*Sin + Length2*Cos
gen_cross_contour_xld(Cross, Row1-b, Column1+a, 10, Phi3)
concat_obj (EmptyCross, Cross, EmptyCross)
c := Length1*Cos - Length2*Sin
d := Length1*Sin + Length2*Cos
gen_cross_contour_xld(Cross, Row1-d, Column1+c, 10, Phi3)
concat_obj (EmptyCross, Cross, EmptyCross)
e:= Length1*Cos + Length2*Sin
f := Length1*Sin - Length2*Cos
gen_cross_contour_xld(Cross, Row1-f, Column1+e, 10, Phi3)
concat_obj (EmptyCross, Cross, EmptyCross)
g := -Length1*Cos + Length2*Sin
h := -Length1*Sin - Length2*Cos
gen_cross_contour_xld(Cross, Row1-h, Column1+g, 10, Phi3)
concat_obj (EmptyCross, Cross, EmptyCross)
tips:这里将四个顶点以十字轮廓的形式保存在空对象EmptyCross内。
二、对矩形四个顶点进行排序并找到左上顶点和右下顶点
area_center_points_xld (EmptyCross, Area3, Row2, Column2)
tuple_length (Column2, Length)
for Index1 := 0 to Length-1 by 1
for Index := 0 to Length-1 by 1if(Index<Length-1)if(Row2[Index]+Column2[Index]>Row2[Index+1]+Column2[Index+1]) RowTemp := Row2[Index]ColumnTemp := Column2[Index]Row2[Index] := Row2[Index+1]Column2[Index] := Column2[Index+1]Row2[Index+1] := RowTempColumn2[Index+1] := ColumnTempendif endif
endfor
endfor
tips:因为左上顶点的行、列坐标之和一定是最小的,右下顶点的行、列坐标之和一定是最大的,通过冒泡排序完成矩形四个顶点数组的排序。
三、计算矩形左上顶点和右下顶点连线与X轴正方向的夹角
offsetX := Column2[3] - Column2[0]
offsetY := Row2[3] - Row2[0]
tuple_atan2 (offsetY, offsetX, angel)
tuple_deg (angel, angelDeg)
RectAngel := 180 - angelDeg
tips:矩形左上顶点坐标(Row2[0],Column2[0]),右下顶点坐标(Row2[3],Column2[3])。
结果:
戳戳小手帮忙点个免费的赞和关注吧,嘿嘿。 |
[Halcon几何] 矩形顶点和对角连线角度计算相关推荐
- halcon中如何生成椭圆_Halcon中关于角度计算和测量拟合的算子详解
角度计算算子简介 1.计算直线与水平轴之间的夹角 angle_lx( : : Row1, Column1, Row2, Column2 : Angle) 角度计算方式:将直线看作向量(有方向性),以直 ...
- halcon找矩形顶点的一种方法
主程序: read_image (Image11, '11')*画仿射矩形 dev_set_color ('green') draw_rectangle2 (3600, Row, Column, Ph ...
- canvas线性渐变实现:根据渐变线角度计算坐标x0,y0,x1,y1
背景 某些情况下可能需要使用canvas实现线性渐变,需求是渐变色恰好填充整个画布,并且渐变的方向不是水平或垂直的,而是任意角度的,举个css3实现的栗子: background: linear-gr ...
- OpenCV中minAreaRect()最小外接矩形 cvBoxPoints()计算矩形顶点 RotatedRect和CvBox2D详解
minAreaRect()函数计算并返回指定点集的最小区域边界斜矩形. RotatedRect minAreaRect(InputArray points) points:输入信息,可以为包含点的容器 ...
- OpenCASCADE:Modeling Algorithms模块几何工具之来自约束的线和圆
OpenCASCADE:Modeling Algorithms模块几何工具之来自约束的线和圆 来自约束的线和圆 约束类型 可用的线和圆类型 外观/内饰 线的方向 与两个圆相切的线 给定半径的圆与两个圆 ...
- 使用MATLAB求图像的形心、外接矩形顶点坐标并标记
使用MATLAB求图像的形心.外接矩形顶点坐标并标记 1. 求图像形心使用自带函数regionprops标记 2. 求图像外接矩形顶点坐标并标记 欢迎学习交流! 邮箱: z-@1-6.com 网站: ...
- Halcon几何定位
Halcon几何定位Halcon几何定位Halcon几何定位 建模经验 知道什么是关键轮廓]什么是干扰轮廓 边缘数量越少越好,边缘数量多了,速度会变慢 边缘越长越好 干扰边越少越好 关键边缘越多越好, ...
- PCB走线角度为90度到底行不行?
关注.星标公众号,直达精彩内容 现在但凡打开SoC原厂的pcb Layout Guide,都会提及到高速信号的走线的拐角角度问题,都会说高速信号不要以直角走线,要以45度角走线,并且会说走圆弧会比45 ...
- 抛物线、导弹线轨迹计算
抛物线轨迹计算 不同输入情况下的抛物线有不同计算方式.为了保证飞行时间的一致,水平初速度和起点两个参数是任何情况下都需要的. 三.示例代码 void UParabolicMovementCompone ...
最新文章
- 极小连通子图和极大连通子图_强连通分量与拓扑排序
- keras merge
- java中获取错误,在简单程序中获取分段错误
- python字符的大小比较_python中字符串怎么比较大小
- rsync 07-confxml.xml配置文件
- Ajax程序设计入门
- Codecraft-17 and Codeforces Round #391 (Div. 1 + Div. 2, combined)
- Python IDE(集成开发工具)的下载安装教程
- idea中XML注释与取消注释快捷键
- 机械电子计算机哪个更适合创业,二本 电气工程及其自动化,和机械电子工程 哪个专业技术性很强,更好就业,更适合考研。...
- AnkhSVN支持vs2012~2022
- 最简单的P2P加密聊天软件开发完成
- python与建筑结构设计_29个常见的结构设计问题盘点
- android 日记 app推荐,用这些 APP 来记录生活,再也不用担心无法坚持写日记
- 关于VirtualBox运行出现“0x00000000指令引用的0x00000000内存。该内存不能为written”的解决方法
- 整理总结:英语口语发音技巧
- 刘颂计算机学院,关于表彰2013—2014学年 - 首页 北京工商大学计算机与 .doc
- 基因数据处理12之samtool的tview来查看sam的匹配文件
- CorelDRAW2023新增了哪些功能?
- 计算机安全应急演练简报,开封市网络安全应急演练表彰大会在计算机与信息工程学院举行...
热门文章
- java图片上传同时后台直接给MultipartFile对象添加图片水印或者文字水印,然后直接上传带水印的图片
- 词汇课程——词的颜色与易混淆的词缀(4)
- java sftp命令_linux下如何使用sftp命令
- 【POJ3349】snowflakes
- Vue 实现页面一键截屏功能
- android 时间水印相机,时间水印相机
- 开源星空照片_如何拍摄星空的好照片
- [PS教程]怎么用PS将图片印章的背景变透明
- mysql授权不管用_MySQL_MySQL授权问题总结,我用localhost的root帐号不能连 - phpStudy...
- 秋招面试题系列- - -Java工程师(十一)