如何解决OpenCV:同时检测多个边界的文本
我目前正在尝试编写一个脚本来使用 Python/OpenCV 检测 OBS 视频流中的文本。
从每个第 n 帧,我需要检测几个特定边界中的文本(示例可以在附件中找到)。对于所有视频帧,这些边界的坐标保持不变。
我的问题:
- OpenCV 是解决我的任务的最佳方法吗?
- 我应该使用什么 OpenCV 函数来为文本检测指定多个边界?
- 有没有办法使用来自 OBS 的视频流作为我脚本的输入?
感谢您的帮助!
解决方法
我不能说 OBS,但 openCV + Tessaract 应该是你所需要的。由于您非常准确地知道文本的位置,因此使用起来非常容易。 here 是关于使用这两者的非常全面的教程,其中包括有关查找文本在图像中的位置的一些内容。
代码可能如下所示:
img = cv2.imread("...") # or wherever you get your image from
region = [100,200,400] # regions where text is
# Tessaract expects rgb open cv uses bgr
img_rgb = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
output = pytesseract.image_to_string(img_rgb[region[0]:region[2],region[1]: region[3]])
可能需要的唯一其他步骤是反转图像,使其在浅色背景上呈现深色文本。可以在 here 找到这些提示。例如,移除您突出显示的方框之一中的红色背景可能有助于提高准确性,这可以通过对红色值 img_rgb[img_rgb[...,0] > 250] = [255,255,255]
设置阈值来实现。
至于读取图像,this other question 可能会有所帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。