news 2026/6/4 21:20:40

OpencvSharp 算子学习教案之 - Cv2.RotatedRectangleIntersection 重载2

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OpencvSharp 算子学习教案之 - Cv2.RotatedRectangleIntersection 重载2

OpencvSharp 算子学习教案之 - Cv2.RotatedRectangleIntersection 重载2

大家好,Opencv在很多工程项目中都会用到,而OpencvSharp则是以C#开发与实现的Opencv操作库,对.NET开发人员友好,但很多API的中文资料、应用场景及常见坑点等缺乏系统性归纳,因此这系列博客将给大家带来Cv2及Mat对象全系列算子学习教案,供大家参考学习。

Cv2.RotatedRectangleIntersection

  • 教案版本:V1.0
  • 面向对象:OpenCvSharp 初学者
  • 所属模块:imgproc
  • 源码位置:OpenCvSharp/Cv2/Cv2_imgproc.cs:4306

摘要:本页演示RotatedRectangleIntersection(RotatedRect, RotatedRect, out Point2f[])如何直接返回交集顶点数组,并把交集结果继续用于绘图或面积计算。

1. 函数名称(带参数签名)

publicstaticRectanglesIntersectTypesRotatedRectangleIntersection(RotatedRectrect1,RotatedRectrect2,outPoint2f[]intersectingRegion)

2. 函数用途

这个重载和上一页的数学意义一样,区别只是输出方式更直接:

  1. 函数会直接返回Point2f[]
  2. 你不用再手工从Mat里读回顶点。
  3. 适合已经习惯在 C# 里处理点数组的场景。

如果你想马上把交集点传给Cv2.Polylines,这个重载通常更顺手。

3. 函数公式

两个旋转矩形的交集仍然是:

I = R 1 ∩ R 2 I = R_1 \cap R_2I=R1R2

函数会返回NonePartialFull,并把交集顶点放进Point2f[]

4. 函数原理说明

这个重载的核心流程和OutputArray版本相同:

  1. 先算两个旋转矩形的几何交集。
  2. 再把交集顶点装进数组。
  3. 返回交集类型,方便你先判断重叠状态。

对初学者来说,这个版本最容易理解,因为“输出就是数组”这件事最直接。

5. 参数含义解析

参数名类型必填含义
rect1RotatedRect第一个旋转矩形
rect2RotatedRect第二个旋转矩形
intersectingRegionout Point2f[]输出交集顶点数组

补充说明:

  1. 这个重载的顶点数组可以直接参与后续 C# 几何运算。
  2. 如果没有交集,数组会是空数组。
  3. 顶点顺序可以直接用于绘制交集多边形。

6. 应用场景列表

场景名场景说明典型用途
场景A:直接数组处理交集点集马上进入业务逻辑几何计算
场景B:绘图教学直接把数组画成多边形教学演示
场景C:面积估计交集点数足够时算面积碰撞分析
场景D:对比学习对比 OutputArray 和数组风格API 教学

7. 函数使用示例

说明:下面示例对应 WPF 场景 B。它直接接收Point2f[]交集结果,并打印点数。

usingSystem;usingOpenCvSharp;internalstaticclassProgram{privatestaticvoidMain(){// 两个旋转矩形故意设计成部分重叠,便于观察交集顶点数组。varrect1=newRotatedRect(newPoint2f(162.0f,156.0f),newSize2f(186.0f,106.0f),-28.0f);varrect2=newRotatedRect(newPoint2f(212.0f,168.0f),newSize2f(170.0f,90.0f),22.0f);// out Point2f[] 重载会把顶点直接写进数组。varintersectionType=Cv2.RotatedRectangleIntersection(rect1,rect2,outPoint2f[]intersectionPoints);Console.WriteLine($"IntersectionType ={intersectionType}");Console.WriteLine($"PointCount ={intersectionPoints.Length}");// 如果顶点足够多,就可以继续计算交集面积。if(intersectionPoints.Length>=3){Console.WriteLine($"IntersectionArea ={Math.Abs(Cv2.ContourArea(intersectionPoints)):F2}");}}}

8. 注意事项

  1. Point2f[]适合直接参与 C# 几何处理,但读取前仍要先看返回值。
  2. 没有交集时,数组会是空的。
  3. 如果你要继续画图,数组可以直接传给Cv2.Polylines
  4. 不要把它和一般的Rect相交逻辑混淆。

9. 调优建议

  1. 如果你已经在代码里习惯用数组,这个重载最省心。
  2. 可以把返回数组和ContourArea一起用,快速算交集面积。
  3. 先画两个矩形,再看交集,会比只看日志更容易理解。
  4. 需要保存中间结果时,数组比 Mat 更方便调试。

10. 进阶扩展

  1. 可以把这个重载和OutputArray版本放在一起做 API 对比。
  2. 可以把数组直接传给自定义的多边形绘制函数。
  3. 可以把旋转框相交扩展成批量重叠筛选。
  4. 可以结合BoxPoints讲旋转矩形顶点的固定顺序。

11. 常见错误排查

  1. 把空数组当成程序错误,实际上它可能只是“没有交集”。
  2. 误以为返回值是面积,实际上返回值是交集类型枚举。
  3. 交集点数很少时还强行做多边形面积计算。
  4. 没有先理解两个矩形的旋转方向,就直接读数组内容。

相关链接:

  • WPF 教学控件:Cv2RotatedRectangleIntersectionControl.xaml.cs
  • 样例实现:RotatedRectangleIntersectionPoint2fArraySample.cs
  • 官方文档源码位置:OpenCvSharp/Cv2/Cv2_imgproc.cs
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/4 21:20:36

如何让 GORM 打印 SQL 语句?三种方式全解析

前言 在使用 GORM 开发 Go 项目时,经常需要查看实际执行的 SQL 语句——排查慢查询、调试数据逻辑、确认查询条件是否正确……但 GORM 默认是关闭的,不会主动把 SQL 打印出来。方式一:全局开启 Debug 模式(最简单) GORM 提供了一个非常方便的…

作者头像 李华
网站建设 2026/6/4 21:16:01

AI时代,程序员焦虑升级:是内卷CRUD还是借力AI?35岁危机如何破局?

文章指出AI正改变程序员的工作方式,引发新的焦虑:被替代的风险和经验的有效性。作者强调,未来程序员需从重复性劳动中解放,转向高价值任务,如业务理解、架构把控和复杂问题解决。AI将承担写代码等基础工作,…

作者头像 李华
网站建设 2026/6/4 21:16:01

解锁Blender 3D打印潜能:3MF格式转换完全指南

解锁Blender 3D打印潜能:3MF格式转换完全指南 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 你是否曾面临这样的困境:在Blender中精心设计的3D模…

作者头像 李华
网站建设 2026/6/4 21:14:23

终极免费ModBus主站工具:QModMaster 5大优势助力工业通信开发

终极免费ModBus主站工具:QModMaster 5大优势助力工业通信开发 【免费下载链接】qModbusMaster Fork of QModMaster (https://sourceforge.net/p/qmodmaster/code/ci/default/tree/) 项目地址: https://gitcode.com/gh_mirrors/qm/qModbusMaster QModMaster是…

作者头像 李华
网站建设 2026/6/4 21:13:53

ESP-SR:嵌入式边缘AI语音识别框架的架构设计与高效实现

ESP-SR:嵌入式边缘AI语音识别框架的架构设计与高效实现 【免费下载链接】esp-sr Speech recognition 项目地址: https://gitcode.com/gh_mirrors/es/esp-sr ESP-SR是乐鑫为ESP32系列芯片打造的嵌入式语音识别框架,专为物联网和智能设备提供完整的…

作者头像 李华