当前位置:首页 » 编程语言 » python图片缩放

python图片缩放

发布时间: 2023-09-03 16:11:55

python PIL如何才能把图片修改成正方形或者任意尺寸而不产生挤压

改变图像尺寸有两类方法:
一是缩放(resize),即重采样。这时,如果图像纵横比发生变化就会导致“挤压”。
二是裁剪(crop)。当然图只能越裁越小;不过可以配合缩放,先放大再裁剪。
既然题主要求不能“挤压”,那就只能裁剪了。函数名我给出来了,具体用法题主自己研究。

Ⅱ Python3.10中Pygame模块怎么添加背景图片

在Python3.10中使用Pygame模块添加背景图片,可以按照以下步骤进行:

  • 首先,导入pygame模块,并初始化Pygame:

    pythonCopy codeimport pygame

    pygame.init()
  • 加载背景图片。可以使用pygame.image.load()函数加载图片,然后使用pygame.transform.scale()函数缩放图片到窗口大小。例如:

    pythonCopy codebackground_image = pygame.image.load("background.jpg")
    background_image = pygame.transform.scale(background_image, (800, 600))

    在上述代码中,我们加载名为background.jpg的图片,并将其缩放到窗口大小,即800x600像素。

  • 创建窗口并显示背景图片。可以使用pygame.display.set_mode()函数创建窗口,然后使用blit()函数将背含贺景图片绘制到窗口上。例如:

    pythonCopy codewindow = pygame.display.set_mode((800, 600))
    window.blit(background_image, (0, 0))
    pygame.display.flip()

    在上述代码中,我们创建了一个大小为800x600像素的窗口,并将背景图片绘制到窗口上。

  • 进入游戏循环。在Pygame中,游戏循唯老橘环通常使用while语句实现。在循环中,我们可以监听用户输入事件,并根据需要更新窗口内容。例如:

    pythonCopy codewhile True: for event in pygame.event.get(): if event.type == pygame.QUIT:
    pygame.quit()
    sys.exit() # 在这里添加需要更新的代码

    pygame.display.flip()

    在上述代码中,我们使用pygame.event.get()函数获取用户输入事件,如果检测到用户关闭窗口的事件,则调用pygame.quit()函数退出Pygame。在循环中,我们可以根据需要更新窗口内容,在最后调用pygame.display.flip()函数更新窗口内容。

  • 完整的代码如下所示:

  • pythonCopy codeimport pygameimport sys


  • pygame.init()


  • background_image = pygame.image.load("background.jpg")

  • background_image = pygame.transform.scale(background_image, (800, 600))


  • window = pygame.display.set_mode((800, 600))

  • window.blit(background_image, (0, 0))

  • pygame.display.flip()while True: for event in pygame.event.get(): if event.type == pygame.QUIT:

  • pygame.quit()

  • sys.exit() # 在这里添加需要更新的代码


  • pygame.display.flip()

  • 在上述代码中,我们加载指团了名为background.jpg的图片作为背景图片,并将其缩放到窗口大小。然后,我们创建了一个大小为800x600像素的窗口,并将背景图片绘制到窗口上。最后,我们进入游戏循环,监听用户输入事件并更新窗口内容。你可以根据实际需要修改这个代码,例如添加游戏元素、事件处理等。

Ⅲ 10 个 Python 图像编辑工具

以下提到的这些 Python 工具在编辑图像、操作图像底层数据方面都提供了简单直接的方法。

-- Parul Pandey

当今的世界充满了数据,而图像数据就是其中很重要的一部分。但只有经过处理和分析,提高图像的质量,从中提取出有效地信息,才能利用到这些图像数据。

常见的图像处理操作包括显示图像,基本的图像操作,如裁剪、翻转、旋转;图像的分割、分类、特征提取;图像恢复;以及图像识别等等。Python 作为一种日益风靡的科学编程语言,是这些图像处理操作的最佳选择。同时,在 Python 生态当中也有很多可以免费使用的优秀的图像处理工具。

下文将介绍 10 个可以用于图像处理任务的 Python 库,它们在编辑图像、查看图像底层数据方面都提供了简单直接的方法。

scikit-image 是一个结合 NumPy 数组使用的开源 Python 工具,它实现了可用于研究、教育、工业应用的算法和应用程序。即使是对于刚刚接触 Python 生态圈的新手来说,它也是一个在使用上足够简单的库。同时它的代码质量也很高,因为它是由一个活跃的志愿者社区开发的,并且通过了 同行评审(peer review)。

scikit-image 的 文档 非常完善,其中包含了丰富的用例。

可以通过导入 skimage 使用,大部分的功能都可以在它的子模块中找到。

图像滤波(image filtering):

使用 match_template() 方法实现 模板匹配(template matching):

在 展示页面 可以看到更多相关的例子。

NumPy 提供了对数组的支持,是 Python 编程的一个核心库。图像的本质其实也是一个包含像素数据点的标准 NumPy 数组,因此可以通过一些基本的 NumPy 操作(例如切片、 掩膜(mask)、 花式索引(fancy indexing)等),就可以从像素级别对图像进行编辑。通过 NumPy 数组存储的图像也可以被 skimage 加载并使用 matplotlib 显示。

在 NumPy 的 官方文档 中提供了完整的代码文档和资源列表。

使用 NumPy 对图像进行 掩膜(mask)操作:

像 NumPy 一样, SciPy 是 Python 的一个核心科学计算模块,也可以用于图像的基本操作和处理。尤其是 SciPy v1.1.0 中的 scipy.ndimage 子模块,它提供了在 n 维 NumPy 数组上的运行的函数。SciPy 目前还提供了 线性和非线性滤波(linear and non-linear filtering)、 二值形态学(binary morphology)、 B 样条插值(B-spline interpolation)、 对象测量(object measurements)等方面的函数。

在 官方文档 中可以查阅到 scipy.ndimage 的完整函数列表。

使用 SciPy 的 高斯滤波 对图像进行模糊处理:

PIL (Python Imaging Library) 是一个免费 Python 编程库,它提供了对多种格式图像文件的打开、编辑、保存的支持。但在 2009 年之后 PIL 就停止发布新版本了。幸运的是,还有一个 PIL 的积极开发的分支 Pillow ,它的安装过程比 PIL 更加简单,支持大部分主流的操作系统,并且还支持 Python 3。Pillow 包含了图像的基础处理功能,包括像素点操作、使用内置卷积内核进行滤波、颜色空间转换等等。

Pillow 的 官方文档 提供了 Pillow 的安装说明自己代码库中每一个模块的示例。

使用 Pillow 中的 ImageFilter 模块实现图像增强:

OpenCV(Open Source Computer Vision 库)是计算机视觉领域最广泛使用的库之一, OpenCV-Python 则是 OpenCV 的 Python API。OpenCV-Python 的运行速度很快,这归功于它使用 C/C++ 编写的后台代码,同时由于它使用了 Python 进行封装,因此调用和部署的难度也不大。这些优点让 OpenCV-Python 成为了计算密集型计算机视觉应用程序的一个不错的选择。

入门之前最好先阅读 OpenCV2-Python-Guide 这份文档。

使用 OpenCV-Python 中的 金字塔融合(Pyramid Blending)将苹果和橘子融合到一起:

SimpleCV 是一个开源的计算机视觉框架。它支持包括 OpenCV 在内的一些高性能计算机视觉库,同时不需要去了解 位深度(bit depth)、文件格式、 色彩空间(color space)之类的概念,因此 SimpleCV 的学习曲线要比 OpenCV 平缓得多,正如它的口号所说,“将计算机视觉变得更简单”。SimpleCV 的优点还有:

官方文档 简单易懂,同时也附有大量的学习用例。

文档 包含了安装介绍、示例以及一些 Mahotas 的入门教程。

Mahotas 力求使用少量的代码来实现功能。例如这个 Finding Wally 游戏 :

ITK (Insight Segmentation and Registration Toolkit)是一个为开发者提供普适性图像分析功能的开源、跨平台工具套件, SimpleITK 则是基于 ITK 构建出来的一个简化层,旨在促进 ITK 在快速原型设计、教育、解释语言中的应用。SimpleITK 作为一个图像分析工具包,它也带有 大量的组件 ,可以支持常规的滤波、图像分割、 图像配准(registration)功能。尽管 SimpleITK 使用 C++ 编写,但它也支持包括 Python 在内的大部分编程语言。

有很多 Jupyter Notebooks 用例可以展示 SimpleITK 在教育和科研领域中的应用,通过这些用例可以看到如何使用 Python 和 R 利用 SimpleITK 来实现交互式图像分析。

使用 Python + SimpleITK 实现的 CT/MR 图像配准过程:

pgmagick 是使用 Python 封装的 GraphicsMagick 库。 GraphicsMagick 通常被认为是图像处理界的瑞士军刀,因为它强大而又高效的工具包支持对多达 88 种主流格式图像文件的读写操作,包括 DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM、TIFF 等等。

pgmagick 的 GitHub 仓库 中有相关的安装说明、依赖列表,以及详细的 使用指引 。

图像缩放:

边缘提取:

Cairo 是一个用于绘制矢量图的二维图形库,而 Pycairo 是用于 Cairo 的一组 Python 绑定。矢量图的优点在于做大小缩放的过程中不会丢失图像的清晰度。使用 Pycairo 可以在 Python 中调用 Cairo 的相关命令。

Pycairo 的 GitHub 仓库 提供了关于安装和使用的详细说明,以及一份简要介绍 Pycairo 的 入门指南 。

使用 Pycairo 绘制线段、基本图形、 径向渐变(radial gradients):

以上就是 Python 中的一些有用的图像处理库,无论你有没有听说过、有没有使用过,都值得试用一下并了解它们。

via: https://opensource.com/article/19/3/python-image-manipulation-tools

作者: Parul Pandey 选题: lujun9972 译者: HankChow 校对: wxy

热点内容
c算法代码 发布:2025-02-03 22:42:20 浏览:861
脚本猫 发布:2025-02-03 22:36:30 浏览:136
qt软件如何反编译 发布:2025-02-03 22:36:27 浏览:21
linux串口数据接收 发布:2025-02-03 22:33:11 浏览:552
战双封脚本吗 发布:2025-02-03 22:32:14 浏览:444
可用内存存储 发布:2025-02-03 22:28:05 浏览:72
邮箱登录需要服务器地址是啥 发布:2025-02-03 22:27:27 浏览:547
云班课服务器 发布:2025-02-03 22:20:28 浏览:602
ftp的服务系统主要包括什么 发布:2025-02-03 21:41:33 浏览:306
换汽车压缩机 发布:2025-02-03 21:38:10 浏览:68