OpenCV 保存图像

Ammar Ali 2024年2月15日
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()

输出:

在 OpenCV 中保存图像

我们使用 NumPyzeros() 函数来创建上面的图像。imwrite() 函数的第一个参数是文件的名称和扩展名,第二个参数是保存图像的变量。

在上面的代码中,我们使用 imread() 函数读取我们保存的图像并使用 OpenCV 的 imshow() 函数显示它。我们要保存的图像应该是 8 位的,并且有一个或三个通道。

对于 16 位图像,我们只能将其保存为 TIFF、JPEG 和 PNG 格式。对于 32 位图像,我们可以将其保存为 TIFF、HDR 和 OpenEXR 格式。

此外,图像应该在 BGR 颜色空间中。如果没有,我们可以使用 OpenCV 的 cvtColor() 函数将一种颜色空间更改为另一种颜色空间。

如果通道顺序或深度不同,我们可以使用 convertTo() 函数将图像转换为支持的格式。

我们还可以使用上述函数保存 8 位或 16 位 BGRA 色彩空间图像。

作者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

相关文章 - OpenCV Image