您的位置:

Python保存图像

一、Python保存图像变量

在Python中,用于存储图片的变量类型是numpy数组。图像的大小由数组的形状决定,其中包括行数、列数和颜色通道数。如果是彩色图像,则会有R、G和B三个通道。每个通道都由8位整数(0-255)表示其亮度。


import numpy as np
import cv2

# 读取图片
img = cv2.imread('test.jpg')
# 查看数组形状
print(img.shape)

输出结果如下:


(1080, 1080, 3)

上述代码中,通过cv2.imread()函数读取了一张名为test.jpg的图片,并用img变量存储了这个数组。输出结果的三个数字分别表示图像的高、宽和通道数。

二、Python保存图片的代码

将图像保存为文件是实现图像处理的重要步骤之一。Python提供了将数组保存为图像的函数cv2.imwrite()。该函数的第一个参数是保存的图片名称,第二个参数是要保存的图像数组。


import numpy as np
import cv2

# 读取图片
img = cv2.imread('test.jpg')
# 将图片保存为new_test.jpg
cv2.imwrite('new_test.jpg', img)

执行完上述代码后,会生成一个名称为new_test.jpg的新图片文件。注意,使用imwrite()函数时要注意保存的文件格式,否则会导致图片无法打开。

三、Python保存图像函数

cv2.imwrite()函数适用于简单的图像处理需求,但对于需要在图像上进行标注或加入文字的需求,需要使用cv2.putText()函数。该函数还可以设置字体、字号、颜色等参数,可根据自己需要进行调整。


import numpy as np
import cv2

# 读取图片
img = cv2.imread('test.jpg')
# 在图像上添加字体
cv2.putText(img, 'Hello, World!', (10,100), cv2.FONT_HERSHEY_COMPLEX, 1, (255,255,255), 2)
# 将图片保存
cv2.imwrite('new_test.jpg', img)

执行完上述代码后,会在原图像的左上角添加一行白色字体Hello, World!

四、Python保存图像路径

在保存图像时,指定正确的保存路径至关重要。可以使用OS模块检查当前目录或创建新目录,并在其中保存图像文件。


import os
import numpy as np
import cv2

# 读取图片
img = cv2.imread('test.jpg')
# 查找当前目录
current_dir = os.getcwd()
# 新建目录
newdir = 'saved_images'
if not os.path.exists(newdir):
    os.mkdir(newdir)
# 保存图像
filename = 'new_test.jpg'
newpath = os.path.join(current_dir, newdir, filename)
cv2.imwrite(newpath, img)

执行完上述代码后,会在当前目录下新建一个saved_images目录,并将处理后的图像保存至其中。

五、Python保存图像后变模糊了

有时候,保存后的图像会出现一些失真或变模糊的情况。这通常是由于图像的保存格式不正确或缺少必要的参数引起的。解决方法是通过调整cv2.imwrite()函数中的参数来解决。


import numpy as np
import cv2

# 读取图片
img = cv2.imread('test.jpg')
# 保存图像,并指定图像质量
cv2.imwrite('new_test.jpg', img, [cv2.IMWRITE_JPEG_QUALITY, 90])

上述方法中,通过在imwrite()函数中增加选项cv2.IMWRITE_JPEG_QUALITY和相应的图像质量参数(0-100),可以有效提高保存图像的质量。

六、Python保存图像无边框

在保存图像时,边框常常会被误认为是图像的一部分,这会导致图像保存时出现边框。解决方法是使用cv2.copyMakeBorder()函数,对图像进行处理,然后再进行保存。


import numpy as np
import cv2

# 读取图片
img = cv2.imread('test.jpg')
# 添加边框
new_img = cv2.copyMakeBorder(img,10,10,10,10,cv2.BORDER_CONSTANT,value=[0,0,0])
# 保存图像
cv2.imwrite('new_test.jpg', new_img)

执行完上述代码后,会在原图像周围添加一个10像素宽的黑边框,并将处理后的图像保存至指定目录。

七、Python保存图像为文件

如果需要将图像保存为文件,则需要先将图像转换为二进制格式,再保存到指定文件中。


import numpy as np
import cv2

# 读取图片
img = cv2.imread('test.jpg')
# 将图像转换为二进制数据
retval, buffer = cv2.imencode('.jpg', img)
# 将二进制数据保存到文件中
with open('new_test.jpg', 'wb') as f:
    f.write(buffer)

通过以上代码,可以将处理后的图像保存为文件,同时保留其较高的清晰度。

八、Python保存图像为灰度图

在一些图像处理任务中,需要将图像从彩色格式转换为灰度格式。使用cv2.cvtColor()函数可以实现灰度图像的转换。


import numpy as np
import cv2

# 读取图片
img = cv2.imread('test.jpg')
# 将彩色图像转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 保存灰度图像
cv2.imwrite('new_test.jpg', gray)

通过以上代码,可以将原始的彩色图像转换为灰度图像,并将其保存到文件中。