org.openpnp.vision.pipeline.stages.DetectFixedCirclesHough
文章目录
- org.openpnp.vision.pipeline.stages.DetectFixedCirclesHough
- 功能
- 参数
- 固定参数(在 XML 中配置)
- 动态参数(必须通过 `pipeline.setProperty()` 预先设置)
- 例子
- 效果
- END
org.openpnp.vision.pipeline.stages.DetectFixedCirclesHough
功能
DetectCirclesHough用硬编码在cv-pipeline配置中的参数来检测圆形。
DetectFixedCirclesHough用预先动态设置的参数来检测圆形,这些参数可以用pipeline.setProperty()先设置好,然后再执行DetectFixedCirclesHough。这就实现了动态检测圆形。
(最小圆心距、最小直径、最大直径)不是从 XML 属性中读取,而是从 pipeline 的动态属性中获取。这使得参数可以在管道运行时由前置脚本或用户输入动态设定,而无需修改管道配置文件。
需要根据外部条件(如元件型号、相机视野、上一阶段检测结果)动态调整圆的搜索范围。
避免为不同参数重复编写多个相似的管道。
适合与脚本(ScriptRun)配合,先计算出圆的预期尺寸,再执行检测。
参数
固定参数(在 XML 中配置)
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
dp | double | 1.0 | 累加器分辨率与图像分辨率的反比。dp=1时分辨率相同;dp=2时累加器宽高减半。增大可加快检测,但可能降低精度。 |
param1 | double | 80.0 | Canny 边缘检测的高阈值。低阈值自动设为param1/2。 |
param2 | double | 13.0 | 圆心检测的累加器阈值。值越小,检测到的假圆越多;值越大,只保留最明显的圆。 |
动态参数(必须通过pipeline.setProperty()预先设置)
| 属性名 | 类型 | 说明 |
|---|---|---|
DetectFixedCirclesHough.minDistance | int | 圆心之间的最小距离(像素),用于避免重复检测。 |
DetectFixedCirclesHough.minDiameter | int | 圆的最小直径(像素)。小于此直径的圆将被忽略。 |
DetectFixedCirclesHough.maxDiameter | int | 圆的最大直径(像素)。大于此直径的圆将被忽略。 |
例子
图像还是用org.openpnp.vision.pipeline.stages.DetectEdgesCanny的测试图像。
<cv-pipeline><stages><cv-stageclass="org.openpnp.vision.pipeline.stages.ImageRead"name="read"enabled="true"file="D:\3rd\openpnp_prj\openpnp-official\openpnp-test-images\my_test\test_canny_color.png"color-space="Bgr"handle-as-captured="false"/><cv-stageclass="org.openpnp.vision.pipeline.stages.ConvertColor"name="gray"enabled="true"conversion="Bgr2Gray"/><cv-stageclass="org.openpnp.vision.pipeline.stages.BlurGaussian"name="blur"enabled="true"kernel-size="7"property-name="BlurGaussian"/><cv-stageclass="org.openpnp.vision.pipeline.stages.ScriptRun"name="setParams"enabled="true"file="D:\3rd\openpnp_prj\openpnp-official\openpnp-test-images\my_test\set_circle_params.py"args=""/><cv-stageclass="org.openpnp.vision.pipeline.stages.DetectFixedCirclesHough"name="detect"enabled="true"dp="1.0"param-1="80.0"param-2="13.0"/><cv-stageclass="org.openpnp.vision.pipeline.stages.ImageRecall"name="restoreOriginal"enabled="true"image-stage-name="read"/><cv-stageclass="org.openpnp.vision.pipeline.stages.DrawCircles"name="draw"enabled="true"circles-stage-name="detect"thickness="2"><colorr="51"g="0"b="255"a="255"/></cv-stage><cv-stageclass="org.openpnp.vision.pipeline.stages.ImageWrite"name="save"enabled="true"file="output_detected_circle.png"/></stages></cv-pipeline>效果
自己动态指定参数后,找到的圆形位置,大小都很准。
