OpenCV 保存图像
本教程将讨论使用 OpenCV 的 imwrite()
函数保存图像。
在 OpenCV 中保存图像
图像由放置在矩阵中的像素组成。每个像素都包含一个颜色值作为 BGR 三元组。
例如,一张 512×512 的图像由 512 列和 512 行组成,图像中存在的像素总数等于行数乘以列数。BGR 三元组值在 8 位图像中包含范围从 0 到 255 的三个值。
第一个值对应于蓝色的强度。例如,值为 (255,0,0) 的像素将具有深蓝色,而值为 (50,0,0) 的像素将具有浅蓝色。
第二个和第三个 BRG 三元组值对应于绿色和红色。我们可以设置这三种颜色的值来制作任何颜色。
在 8 位图像中,单个像素可以有 256 乘以 256 乘以 255 种不同的颜色。我们可以使用 OpenCV 的 imwrite()
函数以我们想要的图像格式保存图像。
例如,让我们创建一个彩色图像并将其保存为 jpg
。请参阅下面的代码。
import cv2
import numpy as np
img = np.zeros((512, 512, 3), dtype=np.uint8)
img[:, 0:250] = (255, 255, 0)
img[:, 250:512] = (0, 255, 255)
cv2.imwrite("Image_name.jpg", img)
saved_image = cv2.imread("Image_name.jpg")
cv2.imshow("image", saved_image)
cv2.waitKey()
输出:
我们使用 NumPy
的 zeros()
函数来创建上面的图像。imwrite()
函数的第一个参数是文件的名称和扩展名,第二个参数是保存图像的变量。
在上面的代码中,我们使用 imread()
函数读取我们保存的图像并使用 OpenCV 的 imshow()
函数显示它。我们要保存的图像应该是 8 位的,并且有一个或三个通道。
对于 16 位图像,我们只能将其保存为 TIFF、JPEG 和 PNG 格式。对于 32 位图像,我们可以将其保存为 TIFF、HDR 和 OpenEXR
格式。
此外,图像应该在 BGR 颜色空间中。如果没有,我们可以使用 OpenCV 的 cvtColor()
函数将一种颜色空间更改为另一种颜色空间。
如果通道顺序或深度不同,我们可以使用 convertTo()
函数将图像转换为支持的格式。
我们还可以使用上述函数保存 8 位或 16 位 BGRA 色彩空间图像。