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

如何用纯色覆盖图片文字(替代cv2.inpaint背景修复方案)

用纯色覆盖识别出的文字(替代背景生成)

原代码使用cv2.inpaint生成背景来去除文字,现在改为直接用纯色填充文字所在的包围框区域,核心修改是移除背景修复逻辑,改为在图像副本上填充指定颜色的多边形区域,实现更直接的文字遮盖效果。

修改后的完整代码

import matplotlib.pyplot as plt
import keras_ocr
import cv2
import numpy as np

def cover_text_with_solid_color(img_path, pipeline, color=(255, 255, 255)):
    # 读取图像(keras_ocr返回RGB格式)
    img = keras_ocr.tools.read(img_path)
    # 创建图像副本,避免修改原始图像
    result_img = img.copy()
    
    # 识别图像中的文字及对应包围框
    prediction_groups = pipeline.recognize([img])
    
    for box in prediction_groups[0]:
        # 提取文字包围框的四个顶点坐标并转换格式
        points = np.array(box[1], dtype=np.int32)
        # 用指定纯色填充文字包围框区域
        cv2.fillPoly(result_img, [points], color)
            
    return result_img

# 初始化keras_ocr识别管道
pipeline = keras_ocr.pipeline.Pipeline()

# 处理图像(默认用白色覆盖文字,可自定义color参数,比如黑色(0,0,0)、灰色(128,128,128))
img_text_covered = cover_text_with_solid_color('image.png', pipeline)

# 展示处理结果
plt.imshow(img_text_covered)
plt.show()

# 保存结果(转换为cv2兼容的BGR格式)
cv2.imwrite('result.png', cv2.cvtColor(img_text_covered, cv2.COLOR_RGB2BGR))

关键修改说明

  • 移除背景修复逻辑:删掉原代码中mask生成和cv2.inpaint相关代码,直接对文字区域进行纯色填充
  • 新增自定义颜色参数:函数支持传入color参数,默认白色,可根据需求设置任意RGB颜色值
  • 图像格式兼容处理:保留keras_ocr的RGB读取格式,保存时转换为cv2要求的BGR格式
  • 保护原始图像:基于原图副本进行操作,避免破坏原始图像数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 05:12:37