我正在尝试使用pyterreract
ocr识别屏幕上的一部分字符。它说,即使扫描一些字符,也无法检测到任何字符。我认为问题在于它的背景是灰色的,而我试图扫描/捕获的文本是黑色的。我认为灰色的背景会使它消失,所以我想把灰色改成白色,希望软件能正常工作。这是我的密码:
imghi = ImageGrab.grab(bbox = (x, y, x + offx, y + offy))
imgglo = np.array(imghi)
gray = cv2.cvtColor(imgglo,cv2.COLOR_BGR2GRAY)
gray2 = cv2.fastNlMeansDenoising(gray, None, 9, 13)
th, threshed = cv2.threshold(gray2, 240, 255, cv2.THRESH_BINARY_INV)
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (11,11))
morphed = cv2.morphologyEx(threshed, cv2.MORPH_CLOSE, kernel)
Image_Inversed = cv2.bitwise_not(gray)
thresh = 0
maxValue = 255
cv2.threshold(Image_Inversed,10,255,cv2.THRESH_BINARY_INV)
img_final = np.array(Image_Inversed)
cv2.imshow('Mats Viewer', img_final)
tess.pytesseract.tesseract_cmd = r'C:\Users\tyler\AppData\Local\Tesseract-
OCR\tesseract.exe' text = tess.image_to_string(img_final)
如果您在理解上有困难,请发表评论。谢谢大家!
事实上,您的代码已经删除了灰色背景-它在
th, threshed = cv2.threshold(gray2, 240, 255, cv2.THRESH_BINARY_INV)
行中,它将颜色值低于240的所有像素设置为0(白色),将颜色值高于240的像素设置为255(黑色)问题是,在进一步的处理过程中,您不使用已处理的图像(
threshed
),而是使用gray
图像。这同样适用于您所做的其他转换——它们是执行的,但是您将结果分配给新的变量,以后不再使用这些变量。重要的是要理解,许多操作(我冒着风险说它通常是大多数python库和案例的默认操作)不会就地更改输入,,而是返回一个新的对象,并应用一些更改因此,简而言之,在处理图像的每一行中,都应该使用前一个操作的输出,而不是初始变量
相关问题 更多 >
编程相关推荐