OpenCV 创建图像
Ammar Ali
2022年5月17日
本教程将讨论使用 NumPy
的 zeros()
函数创建图像并使用 OpenCV 的 imshow()
函数显示它。
在 Python 中使用 NumPy
的 zeros()
函数创建图像
图像由放置在矩阵中的像素组成。每个像素都包含一个颜色值作为 BGR 三元组。
例如,一张 512x512
图像由 512
列和 512
行组成,图像中存在的像素总数等于行数乘以列数。
BGR 三元组值在 8 位图像中包含范围从 0 到 255
的三个值。
第一个值对应于蓝色的强度。例如,值 (255,0,0)
的像素将具有深蓝色,而值 (50,0,0)
将具有浅蓝色。
第二个和第三个 BRG 三元组值对应于绿色和红色。我们可以设置这三种颜色的值来制作任何颜色。
在 8 位图像中,单个像素可以具有 256
乘以 256
乘以 255
不同的颜色。我们可以使用 NumPy
的 zeros()
函数在 Python 中创建黑色图像。
zeros()
函数根据矩阵的行数和列数创建一个仅包含零的矩阵。例如,让我们在 Python 中创建一个黑色图像。
请参阅下面的代码。
import cv2
import numpy as np
height = 512
width = 512
img = np.zeros((height,width,3), np.uint8)
cv2.imshow('Binary',img)
cv2.waitKey(0)
输出:
上图中的每个像素都有 BGR 三元组值 (0,0,0)
,即黑色。我们还可以通过将每个像素值设置为 BGR 三元组值来更改图像的颜色。
例如,让我们将上图的颜色更改为蓝色。请参阅下面的代码。
import cv2
import numpy as np
height = 512
width = 512
img = np.zeros((height,width,3), np.uint8)
img[:,:] = (255,0,0)
cv2.imshow('image',img)
cv2.waitKey(0)
输出:
上述代码中的冒号符号用于所有行和列。第一个冒号对应于列,第二个冒号对应于 img
矩阵中的行。
冒号还将范围如 0 到 100
定义为 0:100
。我们可以设置图像中某些像素的颜色,而不是设置所有像素的颜色。
例如,让我们为上图的不同部分设置不同的颜色。请参阅下面的代码。
import cv2
import numpy as np
height = 512
width = 512
img = np.zeros((height,width,3), np.uint8)
img[:,:] = (255,0,0)
img[0:100,0:100] = (255,255,0)
img[:,width//2:width] = (0,0,255)
cv2.imshow('image',img)
cv2.waitKey(0)
输出:
在上面的代码中,我们使用图像宽度将前 100
列和前 100
行的颜色设置为青色,将图像右侧的颜色设置为红色。
Author: Ammar Ali