【发布时间】:2021-09-16 19:35:12
【问题描述】:
我正在尝试使用 pytesseract 将一些图像转换为文本。这些图像非常基本,我尝试使用一些预处理:
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
gray = cv2.bitwise_not(gray)
gray = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]
原图如下:
生成的图像如下所示:
我在同一位置对一堆具有相同字体的数字执行此操作,结果如下:
它仍然没有在输出中给出任何文本。对于一些图像,它确实如此,但不是所有图像看起来几乎相同。
这是我正在使用的代码的 sn-p:
def checkCurrentState():
"""image = pyautogui.screenshot()
image = cv2.cvtColor(np.array(image), cv2.COLOR_RGB2BGR)
cv2.imwrite("screenshot.png", image)"""
image = cv2.imread("screenshot.png")
checkNumbers(image)
def checkNumbers(image):
numbers = []
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
gray = cv2.bitwise_not(gray)
gray = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]
for i in storeLocations:
cropped = gray[i[1]:i[1]+storeHeight, i[0]:i[0]+storeWidth]
number = pytesseract.image_to_string(cropped)
numbers.append(number)
print(number)
cv2.imshow("Screenshot", cropped)
cv2.waitKey(0)
【问题讨论】:
-
试试
THRESH_BINARY_INV。报告结果。 -
涉及图片处理的问题,还应提供原图。
-
@ChristophRackwitz 我试过它给出了相同数量的正确结果(见编辑)。
-
@bfris 查看编辑
-
删除
bitwise_not。那是在那里使用的错误。此时您的数据是灰度的,而不是二进制的。bitwise_not将 mangle 值,而不是反转它们。删除它。
标签: python image opencv image-processing python-tesseract