You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

含噪轮廓下的矩形检测:板材像素尺寸计算方案咨询

板材尺寸检测(像素单位)的替代方案

1. 过滤触及图像边缘的噪声轮廓

你的问题核心是噪声轮廓触及图像边缘,导致cv2.boundingRect()返回整个图像尺寸。可以先遍历所有轮廓,排除那些边界触及图像边缘的轮廓,再选择面积最大的目标轮廓:

import cv2
import numpy as np

img = cv2.imread('膨胀后的图像.png', 0)
h, w = img.shape

# 查找所有轮廓
contours, _ = cv2.findContours(img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

valid_contours = []
for cnt in contours:
    # 获取轮廓的边界框
    x, y, bw, bh = cv2.boundingRect(cnt)
    # 检查边界框是否触及图像边缘
    if x > 0 and y > 0 and (x + bw) < (w - 1) and (y + bh) < (h - 1):
        valid_contours.append(cnt)

# 选择面积最大的有效轮廓
if valid_contours:
    target_cnt = max(valid_contours, key=cv2.contourArea)
    x, y, bw, bh = cv2.boundingRect(target_cnt)
    print(f"板材尺寸:宽{bw}px,高{bh}px")

2. 使用最小外接矩形替代普通边界框

cv2.minAreaRect()会计算包裹轮廓的最小旋转矩形,相比boundingRect()更贴合目标形状,即使存在少量边缘噪声,也能大概率得到准确的矩形尺寸:

if valid_contours:
    target_cnt = max(valid_contours, key=cv2.contourArea)
    # 获取最小外接矩形
    rect = cv2.minAreaRect(target_cnt)
    # 矩形的宽高(注意:返回的尺寸是无序的,可根据需求排序)
    width, height = rect[1]
    print(f"板材尺寸:宽{round(width)}px,高{round(height)}px")

3. 形态学操作清理膨胀后的噪声

膨胀后可能残留小的白色噪声块,先做开运算(腐蚀+膨胀)去除这些噪声,再提取轮廓,能有效减少边缘干扰:

# 创建结构元素(根据噪声大小调整尺寸)
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
# 开运算清理噪声
cleaned_img = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
# 再进行轮廓检测
contours, _ = cv2.findContours(cleaned_img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 后续选择最大轮廓并计算尺寸(同上述方法)

4. 连通区域分析直接定位目标区域

用cv2.connectedComponentsWithStats()可以直接识别图像中的所有白色连通区域,通过过滤面积参数,快速找到目标板材区域并获取尺寸:

# 连通区域分析(返回标签图、统计信息等)
num_labels, labels, stats, centroids = cv2.connectedComponentsWithStats(img, connectivity=8)

# 排除背景标签(索引0),找到面积最大的区域
max_area = -1
target_idx = 0
for i in range(1, num_labels):
    area = stats[i, cv2.CC_STAT_AREA]
    if area > max_area:
        max_area = area
        target_idx = i

# 获取目标区域的尺寸
target_width = stats[target_idx, cv2.CC_STAT_WIDTH]
target_height = stats[target_idx, cv2.CC_STAT_HEIGHT]
print(f"板材尺寸:宽{target_width}px,高{target_height}px")

内容的提问来源于stack exchange,提问作者sm29

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 01:25:24