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

如何用OpenCV去除验证码图片中的倒影文字?

去除验证码底部倒影的OpenCV实现方案

针对这类底部带镜像倒影的验证码,可通过以下步骤用OpenCV实现倒影去除,便于后续识别:

  • 1. 图像灰度化预处理
    先将彩色验证码转为灰度图,简化后续计算逻辑:

    import cv2
    import numpy as np
    
    # 加载目标验证码图片
    img = cv2.imread("captcha.jpg")
    # 转为灰度图
    gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    
  • 2. 定位倒影分界位置
    倒影区域的整体亮度通常低于原验证码区域,可通过计算每行平均亮度找到分界点:

    # 计算每行的平均像素亮度
    row_avg_brightness = np.mean(gray_img, axis=1)
    # 以最大亮度的60%为阈值,定位第一个亮度骤降的行(原验证码与倒影的分界)
    brightness_threshold = np.max(row_avg_brightness) * 0.6
    split_row = np.argmax(row_avg_brightness < brightness_threshold)
    

    如果图片亮度差异不明显,也可以直接按固定比例裁剪(比如保留上2/3区域):

    height, _ = gray_img.shape
    split_row = int(height * 2 / 3)
    
  • 3. 裁剪去除倒影区域
    直接裁剪保留原验证码所在的上半部分:

    # 裁剪得到无倒影的验证码区域
    clean_captcha = gray_img[:split_row, :]
    
  • 4. 二值化优化(可选)
    对裁剪后的图像进行二值化处理,强化验证码文字与背景的对比度,提升后续识别准确率:

    _, binary_captcha = cv2.threshold(clean_captcha, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 04:10:26