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

org.openpnp.vision.pipeline.stages.SizeCheck

文章目录

  • org.openpnp.vision.pipeline.stages.SizeCheck
    • 功能
    • 参数
    • 例子
      • 产生测试图像
      • cv-pipeline config
      • 效果
    • END

org.openpnp.vision.pipeline.stages.SizeCheck

功能

用于检查检测到的旋转矩形(RotatedRect)的宽度和高度是否在允许的容差范围内。它通常放在返回 RotatedRect 的 Stage 之后(如 MinAreaRect),用于过滤不符合尺寸要求的检测结果。

尺寸比较:将输入矩形的宽度和高度(不考虑方向,取最大值和最小值)与预设的 sizeW、sizeH 进行比较。

容差判断:允许的绝对误差由 tolerance 参数指定。

输出控制:如果尺寸符合要求(两个维度分别都在容差内),则输出原模型;否则返回 null,表示该阶段无有效结果。

参数

参数名数据类型默认值功能描述
toleranceint5允许的像素容差(绝对值)。实际尺寸与期望尺寸之差 ≤ 此值时视为有效。
sizeWint7期望的宽度(像素)。内部会与矩形尺寸的最大值/最小值进行比较。
sizeHint28期望的高度(像素)。内部会与矩形尺寸的最大值/最小值进行比较。

例子

产生测试图像

importcv2importnumpy as np def generate_color_rects_image(output_path):"""生成彩色背景图像,包含多个不同尺寸、颜色、角度的旋转矩形(无网格线)""" width, height=800,600img=np.full((height, width,3),(240,240,240),dtype=np.uint8)# 浅灰色背景# 定义矩形列表:(中心x,中心y, 宽w,高h, 角度, 颜色BGR, 标签)rects=[(200,150,80,50,30,(0,0,255),"R1"),# 红色,80x50(600,150,60,40, -20,(0,255,0),"R2"),# 绿色,60x40(200,400,100,70,15,(255,0,0),"R3"),# 蓝色,100x70(600,400,90,60, -45,(0,255,255),"R4"),# 黄色,90x60(400,300,120,80,0,(255,255,0),"R5"),# 青色,120x80(太大)(150,80,30,20,60,(255,0,255),"R6"),# 紫色,30x20(太小)]for(cx, cy, w, h, angle, color, label)inrects: rect=((cx, cy),(w, h), angle)box=cv2.boxPoints(rect)box=np.array(box,dtype=np.int32)overlay=img.copy()cv2.fillPoly(overlay,[box], color)cv2.addWeighted(overlay,0.6, img,0.4,0, img)cv2.drawContours(img,[box],0,(0,0,0),2)cv2.putText(img, label,(cx-20, cy-10), cv2.FONT_HERSHEY_SIMPLEX,0.5,(0,0,0),1)print(f"{label}: 宽={w}, 高={h}, 角度={angle}")cv2.imwrite(output_path, img)print(f"已生成彩色测试图像: {output_path}")if__name__=="__main__":generate_color_rects_image("color_rects_test.png")

cv-pipeline config

<cv-pipeline><stages><cv-stageclass="org.openpnp.vision.pipeline.stages.ImageRead"name="loadImage"enabled="true"file="D:\3rd\openpnp_prj\openpnp-official\openpnp-test-images\my_test\color_rects_test.png"color-space="Bgr"handle-as-captured="false"/><cv-stageclass="org.openpnp.vision.pipeline.stages.ConvertColor"name="toGray"enabled="true"conversion="Bgr2Gray"/><cv-stageclass="org.openpnp.vision.pipeline.stages.BlurMedian"name="dilate"enabled="true"kernel-size="5"/><cv-stageclass="org.openpnp.vision.pipeline.stages.DetectEdgesCanny"name="edges"enabled="true"threshold-1="50.0"threshold-2="150.0"/><cv-stageclass="org.openpnp.vision.pipeline.stages.FindContours"name="findContours"enabled="true"retrieval-mode="External"approximation-method="Simple"/><cv-stageclass="org.openpnp.vision.pipeline.stages.MinAreaRectContours"name="minAreaRects"enabled="true"contours-stage-name="findContours"/><cv-stageclass="org.openpnp.vision.pipeline.stages.SelectSingleRect"name="selectRect"enabled="true"position="0"rotated-rects-stage-name="minAreaRects"/><cv-stageclass="org.openpnp.vision.pipeline.stages.SizeCheck"name="sizeCheck"enabled="true"tolerance="5"size-w="100"size-h="70"/><cv-stageclass="org.openpnp.vision.pipeline.stages.ImageRecall"name="recallOriginal"enabled="true"image-stage-name="loadImage"/><cv-stageclass="org.openpnp.vision.pipeline.stages.DrawRotatedRects"name="drawValid"enabled="true"rotated-rects-stage-name="sizeCheck"thickness="10"draw-rect-center="false"rect-center-radius="20"show-orientation="false"><colorr="0"g="255"b="0"a="255"/></cv-stage><cv-stageclass="org.openpnp.vision.pipeline.stages.ImageWrite"name="saveResult"enabled="true"file="D:\3rd\openpnp_prj\openpnp-official\openpnp-test-images\my_test\sizecheck_result.png"/></stages></cv-pipeline>

效果




END

http://www.jsqmd.com/news/665830/

相关文章:

  • 2026台州本地装修公司口碑榜排名?值得信赖的品质与高性价比王者推荐 - 疯一样的风
  • 如何快速掌握Zotero-SciHub插件:科研工作者的文献获取终极指南
  • OBS背景移除插件:三步实现智能虚拟背景的魔法工具
  • Python新手避坑:为什么在函数里先打印后赋值会报错?用global解决UnboundLocalError
  • 告别数据乱码!深入调试HC32串口UART:时钟、定时器与波特率误差分析实战
  • 3大神奇技巧:让顽固窗口乖乖听话的WindowResizer终极指南
  • 如何用ExplorerPatcher一键恢复Windows 10经典体验:告别Windows 11卡顿与崩溃的终极方案
  • 可靠的化妆培训服务探讨,便宜化妆与零基础培训哪个口碑好 - mypinpai
  • 终极无水印视频下载指南:三步掌握res-downloader高效资源获取技巧
  • TouchGal:你的Galgame文化社区新家园
  • Apifox接口调试避坑指南:从‘快捷调试’到‘保存用例’的正确姿势
  • 终极免费PCB查看器:5分钟掌握OpenBoardView完整电路板分析
  • 百度网盘下载加速终极指南:如何用PDown免费突破限速限制
  • 从仿真到优化:如何给你的Verilog SPI主设备设计加上‘流水线’提升性能?
  • 探究优艺模型技术水平、品牌知名度与产品耐用性,这家团队靠谱吗 - 工业品网
  • Phi-4-mini-reasoning惊艳效果:GSM8K类数学题高准确率生成展示
  • TongWeb安全加固实战:手把手教你配置X-Frame-Options和CORS,告别点击劫持与跨域烦恼
  • ESP32 Arduino开发实战指南:从零构建智能物联网设备
  • 从‘单打独斗’到‘蜂群作战’:聊聊多无人机协同背后的那些‘坑’与最佳实践
  • 终极Delphi逆向工程指南:IDR工具从入门到精通实战
  • 教学模型优化制造厂怎么收费,专业厂家费用大梳理 - myqiye
  • SeqGPT-560M开源大模型部署教程:无需CUDA编译,RTX 4090直跑方案
  • 怎样高效使用Ofd2Pdf工具:3种实用方案实现OFD转PDF
  • 手把手教你用TMS320F28335的EQEP模块搞定电机编码器(附完整CCS工程代码)
  • GalForUnity架构解析:Unity文字游戏开发框架的技术实现
  • 群晖NAS百度网盘套件终极安装指南:轻松实现云端文件同步
  • 水利水电模型实操模型好用的有哪些,选购要点大揭秘 - 工业设备
  • Tessent ATPG深度调试:从AU/UC/UO分类到覆盖率提升实战
  • 把 system conversion 讲透, 一条从 SAP ERP 走向 SAP S/4HANA 的保留式转型路径
  • 三步获取B站直播推流码:告别官方直播姬限制的终极方案