Python pygame实现图像基本变换的示例详解
函数列表
pygame的transform中封装了一些基础的图像处理函数,列表如下
函数 | 功能 |
---|---|
flip | 镜像 |
scale | 缩放至新的分辨率 |
scale_by | 根据因子进行缩放 |
scale2x | 专业图像倍增器 |
rotate | 旋转 |
rotozoom | 缩放并旋转 |
smoothscale | 平滑缩放 |
smoothscale_by | 平滑缩放至新的分辨率 |
chop | 获取已删除内部区域的图像的副本 |
laplacian | 边缘查找 |
average_surfaces | 多个图像求均值 |
average_color | 图像颜色的均值 |
grayscale | 灰度化 |
threshold | 在某个阈值内的像素个数 |
图像显示
为了演示这些功能效果,先通过pygame做一个显示图像的函数
import pygame def showImg(img): pygame.init() rect = img.get_rect() screen = pygame.display.set_mode((rect.width, rect.height)) while True: for e in pygame.event.get(): if e.type==pygame.QUIT: pygame.quit() return screen.blit(img, rect) pygame.display.flip() ball = pygame.image.load("intro_ball.gif") showImg(ball)
翻转
flip用于翻转,除了输入图像之外,还有两个布尔型参数,分别用于调控水平方向和竖直方向,True表示翻转,False表示不翻转。
import pygame.transform as pt xFlip = pt.flip(ball, True, False) yFlip = pt.flip(ball, False, True) xyFlip = pt.flip(ball, True, True)
效果分别如下
缩放
相对于镜像来说,在游戏中,缩放显然是更加常用的操作。在transform模块中,提供了两种缩放方案
scale(surface, size, dest_surface=None)
scale_by(surface, factor, dest_surface=None)
其中,scale将原图像缩放至给定的size;scale_by则根据给定的factor来对图像进行缩放,如果factor是一个数字,那么将对两个方向进行同样的缩放,如果是一个元组,比如 ( 3 , 4 ) (3,4) (3,4),那么对两个维度分别缩放3倍和4倍。示例如下
xScale = pt.scale_by(ball, (2,1)) yScale = pt.scale(ball, (111,222))
此外,smoothscale和smoothscale_by在缩放的基础上,进行了双边滤波平滑,使得缩放看上去更加自然,
旋转
通过rotate可以对图像进行旋转,其输入参数有二,分别是待旋转图像与旋转角度。这个功能可以无缝插入到前面的平抛运动中,即让球在平抛时有一个旋转,示例如下
代码如下
import time pygame.init() size = width, height = 640, 320 speed = [10, 0] screen = pygame.display.set_mode(size) ball = pygame.image.load("intro_ball.gif") rect = ball.get_rect() th = 0 while True: if pygame.QUIT in [e.type for e in pygame.event.get()]: break time.sleep(0.02) rect = rect.move(speed) if rect.right>width: speed = [10, 0] rect = ball.get_rect() if rect.bottom>height: speed[1] = -speed[1] speed[1] += 1 th += 5 screen.fill("black") screen.blit(pt.rotate(ball, th), rect) pygame.display.flip() pygame.quit()
到此这篇关于Python pygame实现图像基本变换的示例详解的文章就介绍到这了,更多相关Python pygame图像变换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
python使用py2neo查询Neo4j的节点、关系及路径
本文介绍了使用Py2neo的NodeMatcher和RelationshipMatcher查询图中的节点和关系,以及通过执行Cypher语句的查询方式。感兴趣的小伙伴请看下文2021-08-08Python使用functools模块中的partial函数生成偏函数
所谓偏函数即是规定了固定参数的函数,在函数式编程中我们经常可以用到,这里我们就来看一下Python使用functools模块中的partial函数生成偏函数的方法2016-07-07Python按照某列内容对两个DataFrame进行合并操作方法
这篇文章主要给大家介绍了关于Python按照某列内容对两个DataFrame进行合并操作的相关资料,文中通过代码示例介绍的非常详细,对大家学习或者使用Python具有一定的参考借鉴价值,需要的朋友可以参考下2023-08-08python opencv pytesseract 验证码识别的实现
这篇文章主要介绍了python opencv pytesseract 验证码识别的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-08-08
最新评论