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

OpenCV实现控件区域Bounding Box检测与绘制的问题

OpenCV实现控件区域Bounding Box检测与绘制的问题

我刚接触OpenCV和图像处理,现在想实现用OpenCV给界面里的每个滑块控件区域都画上 bounding box,目标是给每个滑块整体加上框线,初始的ER滑块控件界面是这样的:

(图:ER滑块控件界面,每个滑块包含文本标签和对应的滑动条组件)

但我尝试用阈值化和膨胀操作处理后,控件的框线消失了,只剩文本区域,导致findContours只能识别到文本的轮廓。我试过调大MORPH_RECT结构元素的尺寸来合并文本区域,但结果并不理想,膨胀后的效果是这样的:

(图:膨胀处理后的图像,仅文本区域被合并,控件原本的框线完全丢失)

我目前使用的代码如下:

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray, (7,7), 0)
 
thresh = cv2.threshold(blur, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 10))

dilate = cv2.dilate(thresh, kernel, iterations=1)
 
cnts = cv2.findContours(dilate, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] if len(cnts) == 2 else cnts[1]
cnts = sorted(cnts, key=lambda x: cv2.boundingRect(x)[1])
for c in cnts:
    x, y, w, h = cv2.boundingRect(c)
    roi = image[y:y+h, x:x+w]
    cv2.rectangle(image, (x, y), (x+w, y+h), (36,255,12), 2)

我现在不确定该如何调整图像处理流程或者轮廓识别逻辑,才能达到理想的效果——给每个滑块控件整体绘制完整的 bounding box,就像我手动标注的这张示意图一样:

(图:手动标注的理想效果,每个滑块控件被独立的 bounding box 完整包裹)

备注:内容来源于stack exchange,提问作者Finatik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 19:28:06