在 python 中使用 matplotlib 保存图像

Posted

技术标签:

【中文标题】在 python 中使用 matplotlib 保存图像【英文标题】:saving image using matplotlib in python 【发布时间】:2021-04-14 19:16:50 【问题描述】:

我正在尝试编写一个简单的代码来加载图像,将每个像素的值除以 2 并存储图像。图像存储在数组 [1280][720][3] 中。在更改每个像素的值后,我检查了这些值是否符合预期。由于某种原因,这些值是正确的,但是当我存储新图像并检查它时,像素的值与以前不同...... 图像为 1280x720 像素,每个像素有 3 个字节(每种颜色 rgb 一个)

import matplotlib.image as mpimg

img = mpimg.imread('image.jpg')   # (1280, 720, 3)

myImg = []

for row in img:
    myRow = []
    for pixel in row:
        myPixel = []
        for color in pixel:
            myPixel.append(color // 2)
        myRow.append(myPixel)
    myImg.append(myRow)


mpimg.imsave("foo.jpg", myImg)

【问题讨论】:

您必须记住 JPEG 是一种有损格式,当您保存它时,压缩算法可能会稍微改变值。如果文件中的结果与您保存的值大致相同,则您的代码按预期工作。如果您需要设置的确切值,请使用无损图像格式。 【参考方案1】:

img 是一个 numpy 数组,所以你可以使用 img / 2。它也比使用列表循环快得多。

myImg = img / 2
mpimg.imsave("foo.jpg", myImg)

【讨论】:

以上是关于在 python 中使用 matplotlib 保存图像的主要内容,如果未能解决你的问题,请参考以下文章

python使用matplotlib可视化线图(line plot)使用arrow函数在matplotlib可视化图像中添加箭头(drawing arrows in matplotlib)

Python 使用 matplotlib绘制3D图形

python 使用matplotlib在Python中绘制Boxplot

使用matplotlib在python中绘制曲线决策边界

使用 Matplotlib 在 Python 中绘制时间

在 Python 中使用 Matplotlib 缩放 y 轴