我目前正在做一些研究,以检测和定位屏幕录制视频中的文本光标(你知道,当你在计算机上键入时,指示字符位置的闪烁矩形)。为此,我使用自定义对象数据集训练了YOLOv4模型(我从here获取了一个引用),并计划实现DeepSORT来跟踪移动的光标
下面是我用来训练YOLOv4的训练数据示例:
以下是我想要实现的目标:
您认为使用YOLOv4+DeepSORT是否被认为是完成此任务的过度手段?我这样问是因为到目前为止,只有70%-80%的包含文本光标的视频帧能够被模型成功检测到。如果这毕竟是过火了,那么您知道可以为这项任务实现的其他方法吗
无论如何,我计划不仅从VisualStudio代码窗口检测文本光标,还从浏览器(如Google Chrome)和文本处理器(如Microsoft Word)检测文本光标。大概是这样的:
我正在考虑将滑动窗口方法作为一种替代方法,但从我所读到的内容来看,该方法可能会消耗大量资源,并且执行速度较慢。我也在考虑从OpenCV(like this)进行模板匹配,但我认为它的性能不会比YOLOv4更好更快
约束是关于性能速度(即,给定时间可以处理多少帧)和检测精度(即,我希望避免将字母“l”或“1”检测为文本光标,因为这些字符在某些字体中类似)。但我认为,更高的精度和较慢的FPS是可以接受的
我目前正在使用Python、Tensorflow和OpenCV来实现这一点。 多谢各位
如果光标是屏幕上唯一移动的对象,这将起作用。以下是之前和之后的内容:
之前:
之后:
守则:
细分:
BOX_WIDTH
和BOX_HEIGHT
常量返回一个框:while
循环,并从视频中读取。处理视频中的帧和该帧之前的帧:cv2.bitwise_xor
方法找到帧之间的差异,以获得屏幕上的运动位置。然后,我们可以使用定义的get_contour
函数找到两帧之间的运动轮廓:get_line_tip
函数来查找光标的尖端。如果找到了提示,请将其保存到line_tip_past
变量中以用于下一次迭代,如果未找到提示,我们可以使用保存为当前提示的过去提示:get_rect
函数定义一个矩形,并将其绘制到当前帧上。但在绘制之前,我们将帧保存为下一次迭代的当前帧之前的帧:相关问题 更多 >
编程相关推荐