如何识别某个图像何时消失
Posted
技术标签:
【中文标题】如何识别某个图像何时消失【英文标题】:How to identify when a certain image disappear 【发布时间】:2018-05-03 23:53:32 【问题描述】:我正在做一个 opencv 项目,它需要检测屏幕上的图像,它会在出现一段时间后消失。它需要在图像显示时保存尽可能多的帧,并在图像消失时停止。我打算用收集到的数据来做一个 ConvNet,所以我可以捕获的帧越多越好。
我使用模板匹配全屏来搜索图像并确定它何时消失,但我只捕获了大约 30% 的总帧数,屏幕为 30FPS。
为了提高抓帧率,我改成全屏搜索,模板匹配,直到找到图片,然后搜索区域缩小到图片找到的坐标,留有一点余量,所以程序可以使用更少的资源识别图像何时消失(因为检查图像是否仍然存在的区域非常小)。这使我能够捕获 60% 的帧。
但是我想知道,我可以做些其他的事情来优化我的程序吗?我觉得为每一帧做模板匹配是多余的。在这种情况下,对象跟踪是否更好,还是因为图像消失而无法工作?
PS:图像在屏幕上停留大约 7~10 秒,然后再次弹出大约需要相同的时间。
【问题讨论】:
您的程序是否使用了所有可用的 CPU 内核?整体利用率如何? |如果您缩小输入图像和模板的大小怎么办。即使那样,你还能可靠地找到它吗? @DanMašek 缩小图像是什么意思?将它们调整为更小的尺寸然后进行匹配?目前它只使用 1 个核心,我会尝试增加它(以前从未这样做过) 缩小尺寸是指将它们缩放(调整)到一半甚至更小。 (与模板相同)假设您仍然可以获得足够好的匹配,这意味着您需要进行的计算量要少得多。 我可以缩小的最大值为 33%,没有明显的增加 (61%) 和不稳定的捕获。 CPU 使用率约为 i7-7500u 的 20%。我想我会让它达到 60%。我不认为过多增加 CPU 负载是一个好主意(即使我想要,我什至不知道该怎么做)并且使用多处理会太复杂。 【参考方案1】:我最终使用 numpy 来保存捕获的帧,并在减少区域、不调整图像大小或进行多重处理的情况下达到 99% 的效率。
【讨论】:
以上是关于如何识别某个图像何时消失的主要内容,如果未能解决你的问题,请参考以下文章