OpenCV(Open Source Computer Vision Library)是一個開源的計算機視覺和影像處理庫,它提供了豐富的功能和工具,可用於開發各種視覺應用程式。
OpenCV最初是用C++編寫的,但它也提供了Python、Java等多種程式語言的接口,方便不同語言的開發者使用。
使用OpenCV和NumPy創建一個大小為160x280灰度影像,然後顯示圖像。
import cv2
import numpy as np
height = 160 # 影像高
width = 280 # 影像寬
# 建立GRAY影像陣列
image = np.zeros((height, width), np.uint8)
cv2.imshow("image", image) # 顯示影像
cv2.waitKey(0)
cv2.destroyAllWindows()
import cv2
:這是引入OpenCV庫的語句。import numpy as np
:這是引入NumPy庫的語句,通常使用 np
作為別名。height = 160
和 width = 280
:這兩行代碼定義了影像的高度和寬度。image = np.zeros((height, width), np.uint8)
:這一行創建了一個高度為160,寬度為280的灰度影像。np.zeros
函數創建一個全為零的NumPy陣列,並指定了影像的型別為 np.uint8
(8位元的無符號整數,範圍為0到255)。cv2.imshow("image", image)
:這一行使用OpenCV的 cv2.imshow
函數顯示影像。第一個參數是視窗的名稱,第二個參數是要顯示的影像。cv2.waitKey(0)
:這一行等待用戶按下任意按鍵。0
表示無限等待,直到按下按鍵為止。cv2.destroyAllWindows()
:這一行用於關閉所有打開的視窗。在影像的坐標系中跟常見的笛卡兒坐標系不同,(0, 0)是從左上角開始,沒有負值。
我們印出圖像的資訊看看長什麼樣子吧。
image.shape
: 查看圖像形狀。
形狀為160x280灰度影像,這個陣列的所有元素都是 0,這表示整個影像是全黑的。
在灰階影像中,數值0為黑色,數值255為白色。
print(f'image size {image.shape}')
print(image)
使用 NumPy 的 np.linspace
函數來創建一個漸變從黑到白的灰度影像。
使用 np.linspace(0, 255, width, dtype=np.uint8)
來創建一個灰度值的漸變,然後使用 np.tile
將這個漸變複製到整個影像的高度。
# 創建灰度漸變影像
gradient_image = np.linspace(0, 255, width, dtype=np.uint8)
gradient_image = np.tile(gradient_image, (height, 1))
最後呈現由黑到白的灰度影像,來理解圖像資訊的數值 0~255的概念。