OpenCV 创建图像

Ammar Ali 2022年5月17日
OpenCV 创建图像

本教程将讨论使用 NumPyzeros() 函数创建图像并使用 OpenCV 的 imshow() 函数显示它。

在 Python 中使用 NumPyzeros() 函数创建图像

图像由放置在矩阵中的像素组成。每个像素都包含一个颜色值作为 BGR 三元组。

例如,一张 512x512 图像由 512 列和 512 行组成,图像中存在的像素总数等于行数乘以列数。

BGR 三元组值在 8 位图像中包含范围从 0 到 255 的三个值。

第一个值对应于蓝色的强度。例如,值 (255,0,0) 的像素将具有深蓝色,而值 (50,0,0) 将具有浅蓝色。

第二个和第三个 BRG 三元组值对应于绿色和红色。我们可以设置这三种颜色的值来制作任何颜色。

在 8 位图像中,单个像素可以具有 256 乘以 256 乘以 255 不同的颜色。我们可以使用 NumPyzeros() 函数在 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)

输出:

使用 numpy 的黑色图像

上图中的每个像素都有 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)

输出:

使用 numpy 的蓝色图像

上述代码中的冒号符号用于所有行和列。第一个冒号对应于列,第二个冒号对应于 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)

输出:

使用 numpy 的多色图像

在上面的代码中,我们使用图像宽度将前 100 列和前 100 行的颜色设置为青色,将图像右侧的颜色设置为红色。

Author: 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