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

如何使用OpenCV将图像中的青绿色文字替换为白色以优化Tesseract-OCR识别效果

如何使用OpenCV将图像中的青绿色文字替换为白色以优化Tesseract-OCR识别效果

嘿,我来帮你搞定这个问题!你现在遇到的核心问题是位运算的用法没选对,而且HSV颜色范围的设置可能不够精准,导致替换效果不符合预期。咱们换个更直接的思路来实现青绿色文字转白色,保证Tesseract-OCR能更好识别。

问题分析

你之前尝试用位运算来替换颜色,但其实对于这种“指定区域替换为单一颜色”的需求,直接通过掩码(mask)给目标区域赋值会更简单可靠。另外,你当前的HSV颜色范围计算可能没匹配OpenCV的色彩空间规则——OpenCV里HSV的H通道范围是0-179(而不是工具常用的0-360),S和V是0-255,所以之前的范围可能没准确框住青绿色区域。

解决方案步骤

  • 精准设置青绿色的HSV范围:根据OpenCV的色彩空间规则,调整H、S、V的上下限,确保掩码能准确选中所有青绿色文字。
  • 直接通过掩码替换颜色:不需要复杂的位运算,直接在原始BGR图像上,把掩码选中的区域赋值为白色即可。

修改后的完整代码

import cv2
import numpy as np

# 读取图像
image = cv2.imread('pic1.png')

# 展示原始图像
cv2.imshow('原始图像', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

# 转换为HSV色彩空间
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)

# 设置青绿色的HSV范围(适配OpenCV的0-179 Hue范围)
# 可根据实际图像微调数值,确保覆盖所有目标青绿色区域
lower_turquoise = np.array([70, 50, 50])
upper_turquoise = np.array([100, 255, 255])

# 创建掩码:选中青绿色区域
mask = cv2.inRange(hsv, lower_turquoise, upper_turquoise)

# 展示掩码,确认是否准确覆盖目标区域
cv2.imshow('青绿色区域掩码', mask)
cv2.waitKey(0)
cv2.destroyAllWindows()

# 将掩码选中的区域替换为白色(BGR格式的白色是[255,255,255])
image[mask == 255] = [255, 255, 255]

# 展示处理后的结果
cv2.imshow('替换后图像', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

额外优化小技巧

如果掩码没有准确选中所有青绿色文字(比如文字边缘有缝隙),可以对掩码做膨胀操作来优化:

# 用小核对掩码做膨胀,填补文字边缘的缝隙
kernel = np.ones((2,2), np.uint8)
mask = cv2.dilate(mask, kernel, iterations=1)

这样处理后,青绿色文字就会被完美替换成白色,Tesseract-OCR识别起来就清晰多啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 18:57:57