news 2026/4/19 17:41:15

org.openpnp.vision.pipeline.stages.ThresholdAdaptive

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
org.openpnp.vision.pipeline.stages.ThresholdAdaptive

文章目录

  • org.openpnp.vision.pipeline.stages.ThresholdAdaptive
    • 功能
    • 参数
    • 例子
      • 效果
    • END

org.openpnp.vision.pipeline.stages.ThresholdAdaptive

功能

ThresholdAdaptive 是 OpenPnP 视觉管道中的一个自适应阈值二值化阶段,用于处理光照不均的图像。与固定阈值 Threshold 不同,它根据每个像素邻域的局部特性动态计算阈值,从而更好地分离前景和背景。
局部阈值计算:对每个像素,以其为中心的 blockSize × blockSize 邻域内计算均值或加权高斯和,减去常数 cParm 得到该像素的阈值。

二值化输出:将像素值与局部阈值比较,大于阈值的设为 255(白色),否则为 0(黑色),可选的 invert 参数反转黑白。

两种自适应方法:

Mean:邻域均值法。

Gaussian:邻域加权高斯和法(对中心像素权重更高)。

参数

参数名数据类型默认值功能描述
adaptiveMethodAdaptiveMethodMean自适应阈值算法。可选值:Mean(邻域均值)、Gaussian(邻域加权高斯和)。
invertbooleanfalse是否反转二值化结果。false:前景为白色(255),背景为黑色(0);true:前景为黑色,背景为白色。
blockSizeint127计算阈值所用的像素邻域尺寸。必须是奇数且 ≥ 3。实际值会被调整为不小于3的奇数。
cParmint80从计算出的局部均值或加权均值中减去的常数。可为负值,用于调整阈值灵敏度。

例子

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><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.ThresholdAdaptive"name="adaptiveBin"enabled="true"adaptive-method="Mean"invert="false"block-size="11"c-parm="50"/><cv-stageclass="org.openpnp.vision.pipeline.stages.ImageWrite"name="saveResult"enabled="true"file="D:\3rd\openpnp_prj\openpnp-official\openpnp-test-images\my_test\adaptive_result.png"/></stages></cv-pipeline>

效果

blockSize和cParm都不能太大,否则前后背景剥离的效果不好。
通过调整blockSize和cParm,可以得到非常干净的黑白线图。
可以看到,使用ThresholdAdaptive比Threshold要更自由。

END

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/19 17:37:26

ncmdump:免费快速解锁网易云音乐加密文件的终极解决方案

ncmdump&#xff1a;免费快速解锁网易云音乐加密文件的终极解决方案 【免费下载链接】ncmdump 转换网易云音乐 ncm 到 mp3 / flac. Convert Netease Cloud Music ncm files to mp3/flac files. 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdump 还在为网易云音乐下…

作者头像 李华
网站建设 2026/4/19 17:36:59

AAAI 2026 AI 评审试点:效率成本双优,人类评审会被取代吗?

AI 评审论文&#xff1a;接受度逐步提升 不同的人对 AI 评审论文是否靠谱有不同答案&#xff0c;但人们对 AI 评审的接受度正慢慢提升&#xff0c;一些顶级会议在巨大论文投稿量压力下开始推进此事。例如&#xff0c;ICML 2026 放宽了 AI 评审要求&#xff0c;不过还不允许完全…

作者头像 李华
网站建设 2026/4/19 17:36:57

5分钟掌握WebPlotDigitizer:从图表图像智能提取数据的神器

5分钟掌握WebPlotDigitizer&#xff1a;从图表图像智能提取数据的神器 【免费下载链接】WebPlotDigitizer Computer vision assisted tool to extract numerical data from plot images. 项目地址: https://gitcode.com/gh_mirrors/we/WebPlotDigitizer 还在为从科研论文…

作者头像 李华
网站建设 2026/4/19 17:33:25

Java虚拟机精讲【1.1】

1.2.4 Java虚拟机 Java 技术的核心就是 Java 虚拟机( JVM, Java Virtual Machine),因为所有的 Java 程序都运行在 Java 虚拟机内部。 JVM 之所以被称之为 VM,是因为它是由一组规范所定义出的抽象计算机。 JVM 的主要任务就是负责将字节码装载到其内部,解释/编译为对应平…

作者头像 李华