模块十:mask模块

mask模块主要用于创建图像surface的遮罩,也称蒙版。用Mask对象来表示,常常用于来检测物体之间是否发生碰撞。mask模块的主要方法如下:

# 从给定的surface的不透明像素创建一个mask对象
# 如果使用了颜色键,则所有等于color_key的像素都会被设置,不等于color_key的像素不会被设置
# 如果没有使用颜色键,则使用每个像素的alpha值来决定设置结果掩码中的哪些位,alpha大于thresh的值会被设置
mask1 = pygame.mask.from_surface(image_surface)
# 从给定的surface和给定的颜色中创建一个mask对象
# 这里的颜色可以是一个列表(此时表示多种颜色)、元组(此时表示单一颜色)
# 而参数threshold表示指定的颜色的偏差,默认为(0, 0, 0, 255)
# 如果指定了other_surface参数,则第二个参数将弃用。参数threshold则表示other_surface中所有颜色的偏差
mask2 = pygame.mask.from_threshold(image_surface, (255, 0, 0))
# 创建一个用于表示2D位掩码的pygame对象
mask3 = pygame.mask.Mask((200, 200), True)

对于某个Mask对象,有如下方法

# 返回一个mask的副本
mask.copy()
# 获取mask对象的大小
mask.get_size()
# 获取mask对象对应的rect对象
mask.get_rect()
# 获取像素点(x, y)的值
pos = (50, 50)
mask.get_at(pos)
# 设置像素点(x, y)的值,value值介于0-1之间,非0值对应于1,0则为0
value = 0.5
mask.set_at(pos, value)
# 如果两个mask相交,则返回交点位置或者重叠区域;如果不相交,则什么也不返回
# offset参数来指示另一个掩码的左上角与调用掩码的左上角的偏移量。为一个(int, int)元组
other = mask
offset = (0, 0)
mask.overlap(other, offset)
# 返回两个mask重叠区域的数量
mask.overlap_area(other, offset)
# 返回两个mask重叠区域的mask,相当于返回的mask是另外两个mask的交集
mask.overlap_mask(other, offset)
# 将所有的位设置为1
mask.fill()
# 将所有的位设置为0
mask.clear()
# 将所有的位进行翻转
mask.invert()
# 重新设置mask的大小
size = (100, 100)
mask.scale(size)
# 将一个mask对象绘制到另外一个mask对象中
mask.draw(other, offset)
# 从另一个mask对象去除当前的mask对象,相当于作减法
mask.erase(other, offset)
# 获取mask对象中设置位的数量
mask.count()
# 获取设置位的质心
mask.centroid()
# 获取设置位的方向
mask.angle()
# 返回掩码中遇到的第一个连接组件的轮廓点列表
# 参数every指定要跳过的位数
mask.outline(every)
# 返回两个mask的卷积
mask.convolve(other)
# 返回mask中包含连接组件的mask对象
# 连接组件是一组(1个或多个)连接的集合位(正交和对角)
# SAUF算法检查8点连通性,用于在掩码中查找连通分量
# 参数pos选择包含该位置的连接组件
mask.connected_component(pos)
# 返回mask中包含连接组件的多个mask对象
# 参数minimum表示每个连接组件的最小位数,默认为0,相当于没有最小值,相当于将其设置为1,因为连接组件必须具有至少1位设置
minimum = 0
mask.connected_components(minimum)
# 返回连接组件的边界rect对象列表
mask.get_bounding_rects()
# 返回一个带有mask的surface对象
mask.to_surface()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不负韶华ღ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值