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)
输出:
在上面的代码中,我们使用了 NumPy
的 zeros()
函数来创建黑色图像。我们将前 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) 代表红色。