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