捐助郴维网
感谢您对郴维网的支持,你的支持将是郴维网持续发展的动力!
二维码
×
当前位置:郴维网 >Pygame > 正文
3 2018.02

mask | Pygame中文文档

点击次数:852 更新时间:2018-2-3 21:38:09  【打印此页

pygame.mask

Pygame 中处理图形遮罩的模块。


函数

 

·         pygame.mask.from_surface()  ——  从指定 Surface 对象中返回一个 Mask

·         pygame.mask.from_threshold()  ——  从给定阈值的 Surface 对象中创建一个 Mask




 

·         pygame.mask.Mask  ——   用于表示 2d 位掩码(遮罩)的 Pygame 对象


用于快速实现完美的碰撞检测,Mask 可以精确到 1 个像素级别的判断。

Pygame 1.8 新增加的。


函数详解

pygame.mask.from_surface()

从指定 Surface 对象中返回一个 Mask。

from_surface(Surface, threshold = 127) -> Mask

Surface 对象中透明的部分设置为 1,不透明部分设置为 0。

检查每个像素的 alpha 值是否大于 threshold 参数指定的值。(alpha 通道使用 0 ~ 255 描述像素的透明度)

如果 Surface 对象是基于 colorkeys 实现的透明(而不是基于 pixel alphas),则忽略 threshold 参数。

注:关于 Surface 对象的透明实现,可参考:Surface | Pygame中文文档


pygame.mask.from_threshold()

从给定阈值的 Surface 对象中创建一个 Mask。

from_threshold(Surface, color, threshold = (0,0,0,255), othersurface = None, palette_colors = 1) -> Mask

从 Surface 对象中获取 Mask,这个方法更有特色。如果只提供一个 Surface 对象,那么 Surface 对象中所有与 threshold 参数提供颜色匹配的像素均被选入 Mask 中。如果指定了 othersurface 可选参数,那么被选入 Mask 中的像素不仅需要与 threshold 参数提供颜色匹配,还需要包含在 othersurface 指定的 Surface 对象中。


class pygame.mask.Mask

用于表示 2d 位掩码(遮罩)的 Pygame 对象。

Mask((width, height)) -> Mask

方法

 

·         pygame.mask.Mask.get_size()  ——  返回 Mask 的大小

·         pygame.mask.Mask.get_at()  ——  如果像素 (x, y) 被设置,返回值是非 0

·         pygame.mask.Mask.set_at()  ——  设置 Mask 中给定位置的值

·         pygame.mask.Mask.overlap()  ——  返回两个 Mask 在指定偏移处的重叠坐标(如果没有返回 None)

·         pygame.mask.Mask.overlap_area()  ——  返回两个 Mask 重叠的像素数量

·         pygame.mask.Mask.overlap_mask()  ——  将两个 Mask 重叠的部分创建一个新的 Mask

·         pygame.mask.Mask.fill()  ——  将所有的位设置为 1

·         pygame.mask.Mask.clear()  ——  将所有的位设置为 0

·         pygame.mask.Mask.invert()  ——  翻转 Mask 中所有的位(0 变 1,1 变 0)

·         pygame.mask.Mask.scale()  ——  缩放 Mask 的尺寸

·         pygame.mask.Mask.draw()  ——  将 Mask 绘制到另一个 Mask 上边

·         pygame.mask.Mask.erase()  ——  用另一个 Mask 擦除 Mask

·         pygame.mask.Mask.count()  ——  返回 Mask 被设置(为 1)的像素的数量

·         pygame.mask.Mask.centroid()  ——  返回 Mask 的重心点

·         pygame.mask.Mask.angle()  ——  返回像素的方向

·         pygame.mask.Mask.outline()  ——  用列表的形式返回组成对象轮廓的点

·         pygame.mask.Mask.convolve()  ——  返回其它 Mask 的卷积

·         pygame.mask.Mask.connected_component()  ——  返回与某像素区域的连接的 Mask

·         pygame.mask.Mask.connected_components()  ——  返回一组连接某像素区域的 Mask 的列表

·         pygame.mask.Mask.get_bounding_rects()  ——  返回一组像素边界矩形的列表



方法详解

pygame.mask.Mask.get_size()

返回 Mask 的大小。

get_size() -> width,height


pygame.mask.Mask.get_at()

如果像素 (x, y) 被设置,返回值是非 0。

get_at((x,y)) -> int

跟 Surface 对象一样,(0, 0) 表示左上角坐标。


pygame.mask.Mask.set_at()

设置 Mask 中给定位置的值。

set_at((x,y),value) -> None


pygame.mask.Mask.overlap()

返回两个 Mask 在指定偏移处的重叠坐标(如果没有返回 None)。

overlap(othermask, offset) -> x,y

重叠检测的偏移原理如下(偏移可以为负数):
 

+----+----------..
|A   | yoffset
|  +-+----------..
+--|B
|xoffset
|  |
:  :



pygame.mask.Mask.overlap_area()

返回两个 Mask 重叠的像素数量。

overlap_area(othermask, offset) -> numpixels

返回两个 Mask 重叠的像素数量,这可以用于查看在某方向上发生碰撞的部分,或者查看两个 Mask 有多少部分发生碰撞。相似的碰撞一般会通过计算重叠部分的梯度差分被发现。
 

dx = Mask.overlap_area(othermask,(x+1,y)) - Mask.overlap_area(othermask,(x-1,y))
dy = Mask.overlap_area(othermask,(x,y+1)) - Mask.overlap_area(othermask,(x,y-1))



pygame.mask.Mask.overlap_mask()

将两个 Mask 重叠的部分创建一个新的 Mask。

overlap_mask(othermask, offset) -> Mask

返回的 Mask 尺寸是原始 Mask 和 othermask 参数指定的 Mask 重叠部分。


pygame.mask.Mask.fill()

将所有的位设置为 1。

fill() -> None

将 Mask 中所有的位设置为 1。


pygame.mask.Mask.clear()

将所有的位设置为 0。

clear() -> None

将 Mask 中所有的位设置为 0。


pygame.mask.Mask.invert()

翻转 Mask 中所有的位(0 变 1,1 变 0)。

invert() -> None

翻转 Mask 中所有的位(0 变 1,1 变 0)。


pygame.mask.Mask.scale()

缩放 Mask 的尺寸。

scale((x, y)) -> Mask

Mask 根据指定尺寸缩放后返回一个新的 Mask。


pygame.mask.Mask.draw

将 Mask 绘制到另一个 Mask 上边。

draw(othermask, offset) -> None

将 Mask 绘制到另一个 Mask 上边,执行的是按位 or 操作。


pygame.mask.Mask.erase()

用另一个 Mask 擦除 Mask。

erase(othermask, offset) -> None

从 Mask 上擦除 othermask 指定的像素。


pygame.mask.Mask.count()

返回 Mask 被设置(为 1)的像素的数量。

count() -> pixels

返回 Mask 被设置(为 1)的像素的数量。


pygame.mask.Mask.centroid()

返回 Mask 的重心点。

centroid() -> (x, y)

找到 Mask 的重心点。如果 Mask 是空的,那么返回值是 (0, 0)。


pygame.mask.Mask.angle()

返回像素的方向。

angle() -> theta

找到图像中像素的大致方向(-90 度 ~ 90 度),这对于实现像素对接很有用。如果 Mask 是空的,那么返回值是 0.0。


pygame.mask.Mask.outline()

用列表的形式返回组成对象轮廓的点。

outline(every = 1) -> [(x,y), (x,y) ...]

返回值是一个由点组成的列表,用于描绘穿过 Mask 的第一个对象的轮廓线。

every 可选参数用于设置点的跨度,默认是每 1 个像素。


pygame.mask.Mask.convolve()

返回其它 Mask 的卷积。

convolve(othermask, outputmask=None, offset=(0,0)) -> Mask

返回一个由位组 (i-offset[0], j-offset[1]) 组成的 Mask,如果转换的 othermask 参数在右下角 (i, j) 处,那么会与自身重叠。

如果 outputmask 参数被指定,那么就会在 outputmask 参数上进行绘制,outputmask 参数会被返回。否则这个 Mask 的大小是 self.get_size() + othermask.get_size() - (1, 1)。


pygame.mask.Mask.connected_component()

返回与某像素区域的连接的 Mask。

connected_component((x,y) = None) -> Mask

它会使用 SAUF 算法进行连接需要连接的 Mask。它会连通 8 个点。默认情况下,它会返回在连接图像中最大的 Mask。可选项: 一对指定的坐标,与其相连的组件会被返回。如果像素位置没有被设置,那么返回的这个 Mask 就是空的。这个 Mask 的大小会与原始 Mask 一样。


pygame.mask.Mask.connected_components()

返回一组连接某像素区域的 Mask 的列表。

connected_components(min = 0) -> [Masks]

返回一组连接某像素区的 Mask 的列表。min 可选参数用于对每个连接区的指定部分过滤噪点。


pygame.mask.Mask.get_bounding_rects()

返回一组像素边界矩形的列表。

get_bounding_rects() -> Rects

它会获取连接着像素块的边界矩形。每个边界矩形都是一个连接每个像素的内矩形。

Tips
郴维网为您提供各类专业服务:
软件开发,电脑配件销售,WIFI路由器销售,上门电脑维修,上门安装系统,系统安装,软、硬件安装,电脑除尘清灰,显示器维修,WIFI安装调试,服务器维护,数据恢复,密码破解,网络布线,网络检修,打印机维修,打印机加碳粉,苹果电脑安装系统,苹果电脑安装双系统,监控安装维护,电脑外包,笔记本电脑维修,餐饮、美容行业软件安装 等。。。。。。
点击次数:852 更新时间:2018-2-3 21:38:09  【打印此页

上一条:locals | Pygame中文文档

下一条:math

关键词推荐:郴州电脑城 郴州电脑维修公司 维修电脑公司 郴州软件开发 上门电脑维修 上门安装系统 笔记本电脑维修 郴州打印机维修 打印机加碳粉 电脑安装双系统 苹果电脑双系统 液晶显示器维修 联想笔记本维修 联想笔记本维修电话 戴尔笔记本维修电话 郴州戴尔笔记本维修 戴尔笔记本郴州维修点 华硕笔记本维修点 郴州华硕笔记本维修 郴州笔记本上网维修