【发布时间】:2021-02-11 23:40:11
【问题描述】:
我目前正忙于一个项目,该项目使用 Python 读取 FIFA 20 游戏视频中的屏幕文本。 我将每 x 帧拍摄一个“屏幕截图”,这样我就可以将 pytesseract 用于 OCR。 我有一个来自 FIFA 20 游戏的 sn-p,其中包含我想提取的单词/数字(时间、比分和两个团队名称)。
唯一的问题是我想裁剪图像,所以我将比赛时间、球队名称、比分、对手名称作为不同的图片,这样我就可以使用 OCR 读取每张图片,因为整个图片没有用 pytesseract 很好地学习。 我已经尝试了一些过滤器、边缘检测 (cv2.Canny()) 等,但我没有得到我需要的正确输出。由于时间和队名/分数之间的差距,我有一些奇怪的字符,以及分数中的一些奇怪的字符(因为黑色背景?)。
所以我的问题是,解决这个问题的最佳方法是什么? 有没有办法制作一个自适应裁剪的东西,它把球队名称、时间和分数都剪成不同的图片,这样我就可以对它们单独使用 OCR?还是有其他方法可以做到这一点?
提前致谢!
Data I want to retrieve from image
编辑:是的,我尝试通过使用以下代码过滤除团队名称的黄色以外的所有颜色来制作蒙版:
roi_teamnames = image[55:90, 120:900]
roi_teamnames = cv2.cvtColor(roi_teamnames, cv2.COLOR_BGR2HSV)
lower = np.array([0, 25, 147], dtype="uint8")
upper = np.array([32, 255, 255], dtype="uint8")
roi_teamnames = cv2.inRange(roi_teamnames, lower, upper)
cv2.imshow("Teamnames",roi_teamnames)
这给了我一个很好的结果,我可以使用(见链接)。
但现在的问题是,有没有办法自动检测空白,以便我可以将图像裁剪成 2 个不同的图像,每个图像都包含不同的名称?
【问题讨论】:
-
欢迎来到 Stack Overflow!请将您的代码尝试添加到问题中。它可以帮助其他访问者提出可行的解决方案。
标签: python opencv ocr cv2 python-tesseract