一、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)
通过以上代码,可以将原始的彩色图像转换为灰度图像,并将其保存到文件中。