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) 代表紅色。