我正在寻找python读取文本格式的运行状况的方法,然后执行命令(例如,按一个键)。 我正在看youtuber senddex的系列文章:(https://www.youtube.com/playlist?list=PLQVvvaa0QuDeETZEOy4VdocT7TOjfSA8a)。 他编写了python程序来捕获屏幕并“读取”车道,以完成自动驾驶汽车。 我想基于本系列第一部分的目标,使用numpy,PIL和OpenCV,并使用以下代码捕获屏幕。
$PREFIX/bin
(打印循环所需时间的代码可以忽略)
但是,我不知道如何使用opencv或PIL来识别屏幕指定区域中的文本,或者执行命令后该怎么做。
我所需要的只是一些建议,而不是寻找完整的答案。 谢谢您的帮助。
答案 0 :(得分:0)
如果区域在屏幕上始终具有相同的坐标,则可以对其进行裁剪并裁剪所有数字。数字应非常准确。 如果您只想读取数字(0-9),则可以使用例如模板匹配算法。对于此算法,数字在每一帧上都应该看起来完全一样。 https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_imgproc/py_template_matching/py_template_matching.html您必须为所有数字创建参考图像,然后在裁剪的图像上寻找它。
第二个解决方案:您可以使用opencv + tesseract(它包括一个用于文本识别的高度精确的基于深度学习的模型。) https://www.pyimagesearch.com/2018/09/17/opencv-ocr-and-text-recognition-with-tesseract/
其他解决方案是获取具有阈值的数字(或字母)形状,HSV颜色空间中的颜色范围(如果数字始终具有相同的颜色)或某种其他算法。然后,每个数字都可以划分为七个段(https://en.wikipedia.org/wiki/Seven-segment_display)。然后检查每个数字是否这些段为空或填充。 这些算法基于pyImageSearch教程(https://www.pyimagesearch.com/2017/02/13/recognizing-digits-with-opencv-and-python/)