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

org.openpnp.vision.pipeline.stages.MinAreaRect

文章目录

  • org.openpnp.vision.pipeline.stages.MinAreaRect
    • 功能
    • 参数
    • 例子
      • 产生测试图片
      • cv-pipeline config
    • 效果
    • 查看图片中灰度值的方法
    • END

org.openpnp.vision.pipeline.stages.MinAreaRect

功能

在灰度图像中,提取灰度值在指定范围内的像素,然后拟合出包围这些像素的最小外接旋转矩形,并支持仅使用部分边缘(如只检测左边和上边)以及角度约束。

MinAreaRect要求灰度图的前景和背景值有差值,设置thresholdMin~thresholdMax的值在灰度图前景色的范围内,就可以忽略掉背景,只将前景的灰度图像中找到最小外接矩形。

如果hresholdMin~thresholdMax设置的不合适,MinAreaRect就会找错最小外接矩形。

参数

参数名类型描述默认值
thresholdMinint被视为“置位”像素的灰度最小值无默认值(必须设置)
thresholdMaxint被视为“置位”像素的灰度最大值无默认值(必须设置)
expectedAngledouble待检测矩形外接矩形的预期角度(度)0
searchAngledouble在预期角度两侧的搜索范围(度)45
leftEdgeboolean是否检测矩形的左边缘(按预期角度旋转后)true
rightEdgeboolean是否检测矩形的右边缘(按预期角度旋转后)true
topEdgeboolean是否检测矩形的顶部边缘(按预期角度旋转后)true
bottomEdgeboolean是否检测矩形的底部边缘(按预期角度旋转后)true
diagnosticsboolean是否显示检测结果的诊断信息(在图像上绘制)false
propertyNameString用于运行时覆盖属性的管道属性名前缀"MinAreaRect"

例子

产生测试图片

importcv2importnumpy as np def generate_test_image():# 创建彩色渐变背景 (640x640),避免黑色img=np.zeros((640,640,3),dtype=np.uint8)for i in range(640):# B通道从50线性增加到200b=50+int(i*150/640)# G通道固定80g=80# R通道固定100r=100img[i,:,0]=b img[i,:,1]=g img[i,:,2]=r # 旋转矩形的参数 center=(320,320)size=(200,100)# 宽200,高100angle=35.0# 旋转角度 # 获取旋转矩形的四个顶点 rect=((center[0],center[1]),size,angle)box=cv2.boxPoints(rect)box=np.int32(box)# 在图像上绘制橙红色填充矩形(BGR:0,100,255)cv2.fillPoly(img,[box],(0,100,255))# 可选:添加轻微噪声(模拟真实图像)noise=np.random.randint(0,10, img.shape,dtype=np.uint8)img=cv2.add(img, noise)cv2.imwrite("test_minarearect_color.png", img)print("生成测试图片: test_minarearect_color.png (蓝色渐变背景 + 中心旋转35°的橙红色矩形)")if__name__=="__main__":generate_test_image()

cv-pipeline config

<cv-pipeline><stages><cv-stageclass="org.openpnp.vision.pipeline.stages.ImageRead"name="readImage"enabled="true"file="D:\3rd\openpnp_prj\openpnp-official\openpnp-test-images\my_test\test_minarearect_color.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.BlurGaussian"name="blur"enabled="true"kernel-size="3"property-name="BlurGaussian"/><cv-stageclass="org.openpnp.vision.pipeline.stages.MinAreaRect"name="detectRect"enabled="true"threshold-min="110"threshold-max="255"expected-angle="35.0"search-angle="20.0"left-edge="true"right-edge="true"top-edge="true"bottom-edge="true"diagnostics="false"property-name="MinAreaRect"/><cv-stageclass="org.openpnp.vision.pipeline.stages.ImageRecall"name="recallOriginal"enabled="true"image-stage-name="readImage"/><cv-stageclass="org.openpnp.vision.pipeline.stages.DrawRotatedRects"name="drawRect"enabled="true"rotated-rects-stage-name="detectRect"thickness="3"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="saveOutput"enabled="true"file="D:\3rd\openpnp_prj\openpnp-official\openpnp-test-images\my_test\output_minarearect_result.png"/></stages></cv-pipeline>

效果

查看图片中灰度值的方法

在MinAreaRect阶段,将鼠标移动进前景图形和背景图形,就能看到灰度值。


从上图中可以看出,背景色的灰度值为99,前景色的灰度值为138.
所以 stages.MinAreaRect 阶段的threshold-min ~ hreshold-max值范围只要>99 && < 138就可以。
我只修改了 threshold-min = 110,就检测ok了。

END

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

相关文章:

  • 终极简单:安卓LogcatReader日志查看器快速上手指南
  • KMS_VL_ALL_AIO:3分钟搞定Windows和Office永久激活的智能解决方案
  • 梳理2026年推荐的耐高温合金精品定制,选哪家比较好 - 工业品牌热点
  • PatreonDownloader终极指南:3个步骤轻松备份Patreon付费内容
  • QNAP NAS混合存储(SSD+HDD)避坑指南:为什么系统装在SSD上,SWAP还在慢吞吞的HDD里?
  • 别再死记硬背了!用Arduino和ADC0804芯片,5分钟搞懂AD转换的采样保持到底在干啥
  • 5分钟完成B站视频转文字:Bili2text终极指南,零基础也能快速上手
  • 洛雪音乐助手:跨平台音乐播放器的完全使用攻略
  • 免费开源字幕编辑器:Subtitle Edit完整使用指南
  • 话费卡回收靠谱吗?注意事项与心得揭秘 - 团团收购物卡回收
  • 5分钟找回Navicat数据库密码:开源解密工具完全指南
  • 免费开源神器Video2X:用AI一键让模糊视频变4K高清的终极指南
  • 百度网盘批量管理终极指南:如何用自动化工具提升10倍文件转存效率
  • 如何在Kubernetes集群上部署PrivateGPT:完整容器化指南
  • 从数据混乱到决策清晰:2025年数据工程必备开源工具实战指南
  • 分析2026年汽车隐私膜贴膜推荐 德州靠谱品牌有哪些 - 工业推荐榜
  • 从Keil到STM32CubeIDE:免费高效的MCU开发新选择
  • 2026现阶段,陕西企业如何精准选择实力废电机回收厂家? - 2026年企业推荐榜
  • 微信单向好友检测:如何用WechatRealFriends开源工具发现那些悄悄删除你的人
  • Panel开发者工具终极指南:10个提升开发效率的秘密武器
  • 在Windows桌面端畅游酷安社区:Coolapk-UWP带你体验大屏浏览新境界
  • 抖音视频下载神器:3分钟掌握无水印批量下载技巧
  • 如何用Retrieval-based-Voice-Conversion-WebUI在10分钟内打造专属AI语音模型
  • 2026靠谱的汽车贴膜品牌推荐,汽车隐私膜贴膜权威机构怎么选 - 工业品网
  • 别让格式问题拖后腿:用Mendeley和LaTeX高效管理你的KBS论文引用与排版
  • 花19块钱买的杂牌TLC固态,我把它写废了42万GB,结果有点意外
  • 别再到处找安装包了!手把手教你搞定ContextCapture Center最新版(附下载与激活指南)
  • ST-GCN实战:从零搭建骨骼动作识别模型
  • 百度网盘直链解析工具:突破限速的高效下载解决方案
  • 3分钟掌握跨平台资源下载神器:轻松下载微信视频号、抖音无水印视频