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

如何检测图像中的简单矩形并保存后替换为描述文本?

解决方案:矩形检测、提取与文本替换实现

以下是基于Python+OpenCV的完整实现方案,可直接处理你的需求:

步骤说明

  1. 图像预处理:将原图转为灰度图,通过边缘检测和形态学操作突出矩形轮廓
  2. 矩形轮廓筛选:提取图像轮廓,筛选出符合矩形特征的轮廓(4条边、凸多边形)
  3. 矩形提取保存:截取每个矩形的ROI区域,保存为单独图片文件
  4. 文本替换:在原图的矩形位置填充背景色,添加自定义描述文本

完整代码

import cv2
import numpy as np

# 读取原图(替换为你的输入图像路径)
img = cv2.imread("HNQwm.jpg")
# 创建副本用于绘制结果
result_img = img.copy()
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 预处理:边缘检测+形态学闭运算增强轮廓
edges = cv2.Canny(gray, 50, 150)
kernel = np.ones((3,3), np.uint8)
edges = cv2.morphologyEx(edges, cv2.MORPH_CLOSE, kernel)

# 提取轮廓
contours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

rect_count = 0
for cnt in contours:
    # 计算轮廓近似多边形
    epsilon = 0.02 * cv2.arcLength(cnt, True)
    approx = cv2.approxPolyDP(cnt, epsilon, True)
    
    # 筛选矩形:4条边+凸多边形+面积过滤(排除小噪点)
    if len(approx) == 4 and cv2.isContourConvex(approx) and cv2.contourArea(cnt) > 1000:
        rect_count += 1
        # 获取矩形边界框
        x, y, w, h = cv2.boundingRect(approx)
        # 提取ROI并保存
        roi = img[y:y+h, x:x+w]
        cv2.imwrite(f"矩形_{rect_count}.jpg", roi)
        
        # 替换为文本:先填充白色背景
        cv2.rectangle(result_img, (x, y), (x+w, y+h), (255,255,255), -1)
        # 添加描述文本(可自定义内容)
        text = f"矩形{rect_count}"
        # 计算文本位置(居中)
        text_size = cv2.getTextSize(text, cv2.FONT_HERSHEY_SIMPLEX, 0.8, 2)[0]
        text_x = x + (w - text_size[0]) // 2
        text_y = y + (h + text_size[1]) // 2
        cv2.putText(result_img, text, (text_x, text_y), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0,0,0), 2)

# 保存替换后的结果图
cv2.imwrite("替换后原图.jpg", result_img)
# 可选:显示结果
cv2.imshow("Result", result_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

关键细节说明

  • 轮廓筛选条件:通过approxPolyDP获取近似多边形,仅保留4边的凸轮廓,同时过滤面积过小的噪点
  • ROI提取:利用boundingRect获取矩形坐标,直接截取对应区域保存
  • 文本居中:通过getTextSize计算文本尺寸,确保文本在矩形区域内居中显示
  • 自定义调整:可修改文本内容、字体大小、背景色等参数适配你的需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 13:39:37