OpenCV 图像点

Ammar Ali 2024年2月15日
OpenCV 图像点

本教程将讨论 OpenCV 中图像的点表示法。

OpenCV 中图像的点表示法

在 x 和 y 坐标系中,原点位于 (0, 0) 点,x 轴从原点开始向右移动,y 轴也从原点开始向上移动。

对于 OpenCV 中的图像,原点位于图像的左上角,x 轴从左上角开始向右移动。y 轴也从左上角开始,然后向图像底部移动。

例如,如果我们想表示图像的第 2 个像素的位置,我们可以使用 x=1 和 y=0 的点 (0, 1)。

在 OpenCV 中,图像存储为矩阵;我们还可以对点的第一个值表示行号,第二个值表示列号的点使用行列表示法。

在这种情况下,一个点(y,x)将等于一个点(行,列),点(x,y)将等于一个点(列,行)。

因此,如果我们在 OpenCV 中写一个点值,如 (1, 0),代码将 1 作为 y 轴值的行号,将 0 作为列号或 x 轴值。

众所周知,列从左移动写入矩阵,x 轴也从左移动写入,这意味着 x 将等于列,y 将等于行。

例如,要以列-行表示法表示图像的第 2 个像素的位置,我们将其写为 (0, 1),表示第 2 列和第 1 行。

现在让我们考虑一个图像,我们想要在 OpenCV 中更改图像左上角的颜色。我们将更改前几行和前几列的颜色以更改列的颜色。

请参阅下面的代码。

import cv2
import numpy as np

x = np.zeros((312, 312, 3), dtype=np.float32)
cv2.imshow("Original", x)

x[0:100, 0:100] = (0, 0, 255)

cv2.imshow("Result", x)
cv2.waitKey(0)

输出:

像点

在上面的代码中,我们使用了 NumPyzeros() 函数来创建黑色图像。我们将前 100 行和前 100 列的颜色更改为红色,我们可以在上面的输出中看到结果。

现在让我们在上图中添加两行,一行用于行,一行用于列。

请参阅下面的代码。

import cv2
import numpy as np

x = np.zeros((312, 312, 3), dtype=np.float32)
cv2.imshow("Original", x)

x[0:10, :] = (0, 0, 255)  # red
x[:, 0:10] = (255, 0, 0)  # blue

cv2.imshow("Result", x)
cv2.waitKey(0)

输出:

图像点行列

在上面的代码中,我们将前 10 行和所有列的颜色更改为红色,将前 10 列和所有行的颜色更改为蓝色,我们可以在上面的输出中看到结果。

这意味着要使用点系统 (x, y),如果是图像,我们需要将其写为 (y, x) 或 (row, column)。

OpenCV 使用 BGR 颜色空间,所以上面代码中的三元组值 (0, 0, 255) 代表红色。

作者: 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