通常,阈值和文本检测对于高质量的图像来说是好的,但是不好的图像实际上并不是很好。 我认为不良图像需要一些预处理,但是我不知道如何处理。 您是否有任何想法来改善不良图像的文本检测?
import sys
import cv2
import math
img = cv2.imread(sys.argv[1])
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
_, bw = cv2.threshold(gray, 100, 255, cv2.THRESH_BINARY)
kernel = cv2.getStructuringElement(cv2.MORPH_DILATE, (5, 5))
grad = cv2.morphologyEx(bw, cv2.MORPH_GRADIENT, kernel)
contours, hierarchy = cv2.findContours(grad, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for c in contours:
peri = cv2.arcLength(c, True)
approx = cv2.approxPolyDP(c, 0.01 * peri, True)
x, y, w, h = cv2.boundingRect(approx)
if math.fabs(cv2.contourArea(approx)) > 100:
cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2)
cv2.imshow('rects', img)
cv2.waitKey(0)
良好的质量图像
劣质图像