当前位置: 首页 > news >正文

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

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

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

Cv2.Circle

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

摘要:本页演示 Circle(InputOutputArray, Point, int, Scalar, int, LineTypes, int) 如何直接使用 Point 对象绘制圆,并通过 thickness<0 演示实心圆。

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

publicstaticvoidCircle(InputOutputArrayimg,Pointcenter,intradius,Scalarcolor,intthickness=1,LineTypeslineType=LineTypes.Link8,intshift=0)

2. 函数用途

Cv2.Circle(...)用来在图像上绘制一个圆。

这个重载直接接收Point center,最适合下面这些场景:

  1. 你的上游函数已经返回了一个点对象。
  2. 你想把几何结果和绘图结果继续连起来讲。
  3. 你希望代码更清晰地表达“圆心就是一个点”。

它常用于:

  1. 特征点可视化。
  2. 关键点高亮。
  3. 圆形标注和实心圆提示。
  4. 教学中演示对象化坐标写法。

3. 函数公式

圆的几何定义仍然是:

( x − x 0 ) 2 + ( y − y 0 ) 2 = r 2 (x-x_0)^2+(y-y_0)^2=r^2(xx0)2+(yy0)2=r2

这里只是把圆心从两个整数改成了一个Point对象,几何意义完全没有变化。

shift启用时,整数点仍然可以按固定点方式解释:

p r e a l = p i n t 2 s h i f t p_{real}=\frac{p_{int}}{2^{shift}}preal=2shiftpint

4. 函数原理说明

这个函数和 int 坐标版本的绘制原理相同:

  1. 先读取圆心对象和半径。
  2. 再根据lineType生成边界像素。
  3. 最后按thickness决定画边还是填充。

OpenCV 官方文档还说明了这些边界条件:

  1. 绘图函数会自动裁剪超出图像边界的部分。
  2. 抗锯齿主要适用于 8 位图像。
  3. 颜色通道按 BGR 顺序解释。

对初学者来说,Point版本的价值在于:它更像“几何对象”,而不是“两个分散的数字”。

5. 参数含义解析

参数名类型必填含义
imgInputOutputArray要被绘制的图像
centerPoint圆心
radiusint圆半径
colorScalar圆的颜色
thicknessint线宽,默认 1;小于 0 时表示填充
lineTypeLineTypes线型,默认Link8
shiftint固定点小数位,默认 0

补充说明:

  1. Point很适合和其它几何函数配套使用。
  2. radius仍然是半径,不是直径。
  3. thickness < 0时会得到一个实心圆。

6. 应用场景列表

场景名场景说明典型用途
场景A:关键点高亮把一个检测点画成圆形标记特征可视化
场景B:对象中心用圆表示对象中心位置视觉调试
场景C:实心提示用实心圆强调位置标注提示
场景D:组合几何和线段、文本一起使用教学示意图

7. 函数使用示例

说明:下面示例对应 WPF 场景 B。它直接传入Point center,并把thickness设成-1来演示实心圆。

usingOpenCvSharp;internalstaticclassProgram{privatestaticvoidMain(){// 创建一张白底画布,便于观察填充区域。usingvarcanvas=newMat(240,400,MatType.CV_8UC3,Scalar.White);// 这里直接使用 Point 表示圆心。varcenter=newPoint(230,120);intradius=54;// 把 Mat 包装成 InputOutputArray,明确命中 Point 重载。usingvardrawTarget=InputOutputArray.Create(canvas);// thickness = -1 表示绘制实心圆。Cv2.Circle(drawTarget,center,radius,newScalar(230,126,68),-1,LineTypes.AntiAlias,0);// 保存结果,方便直接检查实心圆的效果。Cv2.ImWrite("circle-point.png",canvas);}}

8. 注意事项

  1. Point只是坐标容器,不会自动帮你做几何校正。
  2. thickness < 0时不会再画边框,而是直接填充。
  3. 如果圆心颜色和背景接近,初学者可能会误以为没画出来。
  4. shift仍然是固定点语义,不是普通缩放参数。

9. 调优建议

  1. 调试时可以先用浅色背景,再用深色圆。
  2. 如果需要突出圆心,可以叠加DrawMarker或文本标签。
  3. 如果要展示边界平滑效果,优先使用LineTypes.AntiAlias
  4. 如果要表达“选中区域”,实心圆通常比空心圆更醒目。

10. 进阶扩展

  1. 可以把圆心和DrawMarker组合起来做调试工具。
  2. 可以和Ellipse对比,帮助初学者理解“圆是椭圆的特例”。
  3. 可以把点坐标从PointPolygonTestFitLine等函数结果中取出来。
  4. 可以和鼠标事件配合做实时交互圆。

11. 常见错误排查

  1. Point当成普通数组使用,而不是几何点对象。
  2. 把半径写成直径。
  3. 误以为thickness < 0只是“更粗一些”。
  4. 忽略了 BGR 和 RGB 的顺序差异。

相关链接:

  • WPF 教学控件:Cv2CircleControl.xaml.cs
  • 样例实现:CirclePointSample.cs
  • 官方文档源码位置:OpenCvSharp/Cv2/Cv2_imgproc.cs
http://www.jsqmd.com/news/1072810/

相关文章:

  • 数字化赋能传统离散制造:智能化技术在高端石材工程领域的落地与深度优化
  • 【LangChain核心组件】文档加载器
  • 2018Y408
  • Sqlserver数据库日志文件过大(收缩/裁剪处理)
  • CSDN 高质量 DHCP 实验博文
  • 花5万买串口屏,总结出的7条血泪教训做储能设备的千万别再踩坑
  • CircleCI自动化_circleci-automation
  • 程序员跨境收支必备:查外汇网实战指南
  • 《Effective Python》读书笔记14: 附录 - 90条建议完整列表
  • 鸿蒙PC中使用ohos-sdk完成Rust适配,自动签名编译安装第三方库walkdir是 Rust 递归遍历目录的专用库
  • 第34章:自动化代码评审Agent——自动审查PR并给出建议
  • AI调试助手EAP谱试,连接周期从2天到3小时
  • 一篇文章带你入门漏洞靶场:从 0 到 1 玩转 bWAPP(附完整安装教程)
  • ChatGPT 转 pdf 怎么压缩但清晰,AI 导出鸭平衡体积与清晰度,告别文档臃肿问题
  • Codex CLI-03-AGENTS.md 编写指南:让 AI 理解你的项目
  • 屏幕截图文字识别工具帮你屏幕截图取字
  • 论文分享➲ arXiv2026 | H2HMem: A Multimodal Memory Benchmark for Agents in Human-Human Interactions
  • 鸿蒙PC适配llvm-gcc-compat编译安装第三方库convert_case,打造Rust 第三方字符串命名风格互相转换
  • 5分钟搞定OpenCode Go套餐无缝接入Claude Code,性价比直接起飞!
  • 鸿蒙 PC使用ohos-pip-autosign激活自动签名工具,安装第三方库arrow实现Python人性化时间处理库
  • 嵌入式linux学习记录十四、术语
  • 第二章 基本数据类型及其操作4
  • SoK: Taxonomy and Evaluation of Prompt Security in Large Language Models
  • 智谱清言能生成 word 吗?AI 导出鸭一站式搞定文档导出难题
  • 31. 完美转发:将参数原样传递
  • 在MacOS上如何安装配置工时通
  • 驱动更新工具
  • 第30章 「对称破缺」—— 悦儿篇
  • Agent 到底是什么?它不是会聊天的 AI,而是会执行任务的系统
  • 古籍版本流传信息目录页爬取实战:用 Python 抽取书名、版本、刊刻年代、藏馆与链接