pygame图像变换:缩放、旋转、镜像

这篇具有很好参考价值的文章主要介绍了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)

pygame image 图片旋转,pygame,python,开发语言,图像变换,图像旋转,python游戏开发,游戏

翻转

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)

效果分别如下

pygame image 图片旋转,pygame,python,开发语言,图像变换,图像旋转,python游戏开发,游戏

缩放

相对于镜像来说,在游戏中,缩放显然是更加常用的操作。在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))

pygame image 图片旋转,pygame,python,开发语言,图像变换,图像旋转,python游戏开发,游戏

此外,smoothscale和smoothscale_by在缩放的基础上,进行了双边滤波平滑,使得缩放看上去更加自然,

旋转

通过rotate可以对图像进行旋转,其输入参数有二,分别是待旋转图像与旋转角度。这个功能可以无缝插入到前面的平抛运动中,即让球在平抛时有一个旋转,示例如下

pygame image 图片旋转,pygame,python,开发语言,图像变换,图像旋转,python游戏开发,游戏

代码如下文章来源地址https://www.toymoban.com/news/detail-765821.html

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()

到了这里,关于pygame图像变换:缩放、旋转、镜像的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • OpenCV图像的仿射变换、旋转和缩放

    以下是对代码的逐行解释:

    2024年02月13日
    浏览(53)
  • 【Android】Bitmap图片旋转、缩放、翻转等变换(90/100)

    自定义BitmapChangeView: 工具类: 布局引用: 应用如下: 推荐理由 postman在国内使用已经越来越困难: 1、登录问题严重 2、Mock功能服务基本没法使用 3、版本更新功能已很匮乏 4、某些外力因素导致postman以后能否使用风险较大 出于以上考虑因此笔者自己开发了一款api调试开发工

    2024年02月16日
    浏览(36)
  • 三维变换矩阵实战——三维点云的旋转、缩放、镜像、错切、平移、正交投影

    旋转矩阵:右边矩阵是点云的原始坐标,左边的是旋转矩阵     可视化:绕x轴旋转90度 代码: 旋转矩阵:    可视化:绕y轴旋转180度 代码: 旋转矩阵:    可视化:绕z轴旋转90度 代码: 旋转矩阵:  线绕哪个轴转,xyz矩阵就和哪和轴的旋转矩阵先计算      可视化:先

    2024年02月04日
    浏览(93)
  • opencv006图像处理之仿射变换(旋转,缩放,平移)

    空间变换中的仿射变换对应着五种变换,平移,缩放,旋转,翻转,错切。而这五种变化由原图像转变到变换图像的过程,可以用仿射变换矩阵进行描述。而这个变换过程可以用一个2*3的矩阵与原图进行相乘得到。关键就是这个矩阵M:  平移,旋转   透视 M: 变换矩阵 desi

    2024年01月21日
    浏览(52)
  • Opencv-C++笔记 (16) : 几何变换 (图像的翻转(镜像),平移,旋转,仿射,透视变换)

    图像旋转是指图像按照某个位置转动一定的角度的过程,旋转中图像仍保持着原始尺寸。图像旋转后图像水平对称轴、垂直对称轴及中心坐标原点都可能会发生变换,因此需要对图像旋转中的坐标进行相应转换。 假设有一个点:P(x,y),它在绕原点 O(0,0) 旋转 β 后,被转换成

    2024年02月14日
    浏览(71)
  • Python图像处理丨图像缩放、旋转、翻转与图像平移

    摘要: 本篇文章主要讲解Python调用OpenCV实现图像位移操作、旋转和翻转效果,包括四部分知识:图像缩放、图像旋转、图像翻转、图像平移。 本文分享自华为云社区《[Python图像处理] 六.图像缩放、图像旋转、图像翻转与图像平移》,作者:eastmount 。 本篇文章主要讲解Pyth

    2024年02月06日
    浏览(57)
  • 仿射变换中的旋转缩放变换矩阵推导

    仿射变换可以将矩阵形状转换为平行四边形。可以挤压形状,但是必须保持两边平行。常见的是旋转、缩放、平移变换。缩放和平移比较简单,本文重点推导旋转缩放变换矩阵。 任意一点 ( x 0 , y 0 ) (x_0,y_0) ( x 0 ​ , y 0 ​ ) 可以看成 ( x 0 , 0 ) (x_0, 0) ( x 0 ​ , 0 ) 向量和 ( 0 ,

    2024年04月24日
    浏览(87)
  • 使用Python批量旋转,镜像图片

    当我们进行大量图像处理时,经常需要旋转或镜像图像。但一张张处理图片费神又费力,有什么好的办法可以帮助我们快速搞定这个问题呢?这时候我们可以写个简单的python程序来搞定它!~ 在Python中,我们可以使用Pillow库(Python Imaging Library)进行图像处理。Pillow库提供了很

    2024年02月01日
    浏览(61)
  • LeetCode in Python 48. Rotate Image/Matrix (旋转图像/矩阵)

    旋转图像/矩阵的重点是寻找旋转前后对应位置的坐标关系。 示例: 图1 旋转图像/矩阵的输入输出示意图  代码:  解释: 1)外层循环控制需要转的大圈圈数,内层循环控制每一圈需要转的小圈圈数,大小圈数的解释见图2,例如n=4,需要循环n // 2 = 2大圈,其中黄色循环箭头

    2024年04月27日
    浏览(62)
  • Android 对View 进行旋转、缩放、平移的属性变换后,获取外矩形顶点

    来张图 Android View 通过平移、旋转、缩放后,顶点映射 之前写的这个文章,里面用到的是 matrix.mapPoints() 通过 矩形的4个点来映射出新的4个点。 个人以为这就会得到正确的结果。 最近呢,就想着,验证一下这个是不是正确的 验证想法: “基于 变换后的 ltrb,加一个自定义

    2023年04月23日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包