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

如何去除验证码网格线并提取文本?(OpenCV新手求助)

基于OpenCV的带网格/凸起图像文本提取方案

一、预处理流程:去网格+校正畸变+图像增强

1. 去除网格线

针对规则的横竖网格,用形态学开运算分别消除横线和竖线:

import cv2
import numpy as np

# 读取灰度图像
img = cv2.imread('目标图像.png', 0)

# 消除水平网格线
horizontal_kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (40, 1))
remove_horizontal = cv2.morphologyEx(img, cv2.MORPH_OPEN, horizontal_kernel, iterations=2)
horizontal_mask = cv2.threshold(remove_horizontal, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]
img_no_horizontal = cv2.bitwise_and(img, img, mask=horizontal_mask)

# 消除垂直网格线
vertical_kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (1, 40))
remove_vertical = cv2.morphologyEx(img_no_horizontal, cv2.MORPH_OPEN, vertical_kernel, iterations=2)
vertical_mask = cv2.threshold(remove_vertical, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]
img_no_grid = cv2.bitwise_and(img_no_horizontal, img_no_horizontal, mask=vertical_mask)

2. 校正中间圆形凸起畸变

如果文本区域近似矩形,用透视变换快速校正;若为球面畸变,可后续尝试相机标定后的畸变校正:

# 手动标记文本区域的四个角点(需根据实际图像调整坐标)
src_pts = np.float32([[60, 60], [440, 60], [60, 440], [440, 440]])
dst_pts = np.float32([[0, 0], [400, 0], [0, 400], [400, 400]])

# 生成透视变换矩阵并应用
transform_matrix = cv2.getPerspectiveTransform(src_pts, dst_pts)
img_corrected = cv2.warpPerspective(img_no_grid, transform_matrix, (400, 400))

3. 降噪与二值化增强

通过高斯模糊降噪,再用自适应阈值生成清晰的二值图像:

# 高斯模糊去除噪声
blurred_img = cv2.GaussianBlur(img_corrected, (3, 3), 0)
# 自适应阈值二值化,突出文本
binary_img = cv2.adaptiveThreshold(blurred_img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 11, 2)

二、文本提取(OCR)

使用Tesseract OCR提取文本(需提前安装pytesseract库和Tesseract引擎):

import pytesseract

# 若Tesseract未加入系统环境变量,需指定路径
# pytesseract.pytesseract.tesseract_cmd = r'你的Tesseract安装路径\tesseract.exe'

# 提取图像文本
extracted_text = pytesseract.image_to_string(binary_img, lang='eng')
print(extracted_text)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 21:37:19