我正在做一个项目,涉及到使用计算机视觉自动化视频游戏。我的下一个任务涉及到将游戏的UI元素从实际的游戏视野中分离出来。例如:
我们将截取整个客户端窗口的屏幕截图,如下所示:
然后,我们将在屏幕上定位各种UI元素(这是通过模板匹配完成的,请参见:Template matching with transparent image templates using OpenCV Python)的数据。
然后,我们需要从客户端屏幕截图中 * 减去 * 匹配的模板,得到如下结果:
这使得我可以在游戏的视野中执行计算机视觉功能,而不会有UI元素干扰的风险。
假设我们有以下代码:
# Let's assume we have already taken a screenshot of the client window
client_window = cv2.imread('client_window.png')
# Here are the three UI areas I'd like to remove/blackout from the above image
ui_chatbox = {'left': 0, 'top': 746, 'width': 520, 'height': 167}
ui_minimap = {'left': 878, 'top': 31, 'width': 212, 'height': 207}
ui_inventory = {'left': 849, 'top': 576, 'width': 241, 'height': 337}
如何从client_window
矩阵中遮挡UI元素边界框的像素?
1条答案
按热度按时间lhcgjxsq1#
最后,我用切片法将某个范围内的所有像素设置为黑色来解决这个问题。我想到这个方法是因为我知道裁剪图像是一个类似的过程,两者都涉及到选择一个像素范围: