在屏幕上显示PyGame遮罩
我正在做一个机器人视觉项目,需要通过颜色来识别物体。目前我使用的是遮罩来实现这个目的。到目前为止,一切都还不错,但现在我需要调整一些设置,想看看这些变化对最终结果的影响。
我最初的想法是,“好吧,把遮罩打印到屏幕上”,于是我尝试把遮罩当作一个表面来处理,但结果发现PyGame的遮罩不能直接显示在屏幕上:
TypeError: argument 1 must be pygame.Surface, not pygame.mask.Mask
我现在使用的是PyGame.mask操作,虽然我在猜测遮罩的样子,但我觉得能在屏幕上显示当前的遮罩会非常有用。如果我能把遮罩应用到一个表面上,看看实际被识别的内容,那就更好了。不过,黑白的遮罩显示也足够了。我看过文档,但还是不知道该怎么做。
另外,我想显示的遮罩是通过pygame.mask.from_threshold生成的。
有没有什么线索可以帮我实现这个?
1 个回答
6
我也在研究这个问题,感觉这里面有个空白。我找不到办法把一个pygame.mask对象再绘制回一个表面上。
我发现“大家”通常会先用mask.outline()来获取轮廓,然后再把这些点画出来。
比如,绘制这个遮罩的轮廓:
olist = myImage_mask.outline()
pygame.draw.lines(blankSurf,(200,150,150),1,olist)
或者填充这个遮罩的轮廓:
olist = myImage_mask.outline()
pygame.draw.polygon(blankSurf,(200,150,150),olist,0)