【发布时间】:2020-01-21 16:53:49
【问题描述】:
我目前正在尝试从小屏幕截图中检测数字。但是,我发现准确性很差。我一直在使用 OpenCV,图像以 RGB 格式捕获并转换为灰度,然后使用全局值执行阈值处理(我发现自适应效果不太好)。
这是其中一个数字的灰度示例,后面是阈值保持后的图像示例(数字范围为 1-99)。请注意,图像的初始屏幕截图非常小,因此被放大了。
非常感谢任何有关如何使用 OpenCV 或完全不同的系统来提高准确性的建议。下面包含一些代码,该函数是通过屏幕截图的 RGB 数字来传递的。
def getNumber(image):
image = cv2.resize(image, (0, 0), fx=3, fy=3)
img = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
thresh, image_bin = cv2.threshold(img, 125, 255, cv2.THRESH_BINARY)
image_final = PIL.Image.fromarray(image_bin)
txt = pytesseract.image_to_string(
image_final, config='--psm 13 --oem 3 -c tessedit_char_whitelist=0123456789')
return txt
【问题讨论】:
-
你试过什么?什么不起作用?显示您的代码。请阅读此论坛的帮助部分,了解如何提出好问题。
-
道歉@fmw42。在底部包含当前函数。
-
您可以尝试自适应阈值,或者您可以尝试使用一些形态学来尝试关闭白色字母。
标签: python opencv machine-learning image-processing ocr