Python | OpenCV 圖片屬性與資訊查詢
📚 前言
在前一章我們學會了如何輸出影片。
這一篇要進一步學習 圖片屬性與資訊查詢,理解如何取得圖片的大小、通道數、型態等基本資訊,並進一步分析圖片的內容。
🖼️ 基本屬性
- shape:圖片的維度資訊
(高度, 寬度, 通道數)
- size:圖片的總像素數
(高度 x 寬度 x 通道數)
- dtype:圖片的資料型態 (例如
uint8)
- ndim:圖片的維度數量
範例程式
1 2 3 4 5 6 7 8
| import cv2
img = cv2.imread("test.png")
print("Shape:", img.shape) print("Size:", img.size) print("Dtype:", img.dtype) print("Ndim:", img.ndim)
|

圖:輸出圖片的基本屬性
🎨 像素操作
圖片在 OpenCV 中其實就是一個 NumPy 陣列,每個像素都對應到一組 BGR 值 (範圍 0~255)。除了查詢,我們也能直接存取或修改像素。
範例一:讀取像素顏色
1 2 3 4 5 6 7 8 9 10 11 12 13
| import cv2
img = cv2.imread("image.jpg")
(b, g, r) = img[100, 200] print("B:", b, "G:", g, "R:", r)
b_channel, g_channel, r_channel = cv2.split(img) print("Blue 通道:", b_channel) print("Green 通道:", g_channel) print("Red 通道:", r_channel)
|
👉 單一像素的顏色資訊可用於顏色偵測、區域分析或影像修正;而分離通道則能針對單一顏色做進一步處理。
範例二:建立與修改像素顏色
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| import cv2 import numpy as np
img = np.zeros((4, 4, 3), dtype=np.uint8) img[:] = [255, 255, 255]
img[0, 0] = [255, 0, 0] img[1, 2] = [0, 255, 0] img[3, 3] = [0, 0, 255]
print(img)
big_img = cv2.resize(img, (400, 400), interpolation=cv2.INTER_NEAREST)
cv2.imshow("test", big_img) cv2.waitKey(0) cv2.destroyAllWindows()
|

圖:建立 4x4 圖片並修改像素顏色,再放大顯示

圖:對應顯示藍、綠、紅色區塊
🔍 進階分析
除了基本屬性之外,我們也可以進一步分析圖片的內容:
- 平均顏色:計算整張圖片的平均 BGR 值。
👉 可用來描述圖片整體風格、判斷主色調、檢查亮度或曝光。
- 最大值 / 最小值:找出像素的亮度範圍。
👉 可用於影像品質檢測,判斷是否過暗或過曝。
- 灰階直方圖:統計像素分布,常用於影像分析。
👉 可用於亮度分析、對比度判斷、影像增強。
範例程式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| import cv2 import numpy as np
img = cv2.imread("test.png")
mean_color = cv2.mean(img)[:3] print("平均顏色 (BGR):", mean_color)
min_val, max_val, _, _ = cv2.minMaxLoc(cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)) print("灰階最小值:", min_val) print("灰階最大值:", max_val)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) hist = cv2.calcHist([gray], [0], None, [256], [0, 256]) print("灰階直方圖:", hist[:10])
|

圖:圖片的平均顏色與灰階直方圖
⚠️ 注意事項
- 顏色通道:彩色圖片通常是 BGR 三通道,灰階圖片則只有一通道。
- 資料型態:常見為
uint8,範圍 0~255。
- 圖片大小:不同解析度會影響後續處理效能。
- 直方圖應用:可用於亮度分析、對比度調整、影像增強等。
🎯 結語
這一篇我們學會了如何查詢圖片的基本屬性,包括大小、通道數、型態等,並進一步分析平均顏色、亮度範圍、直方圖,以及單一像素的顏色資訊。
下一篇將進一步學習 影片屬性與資訊查詢,掌握影片處理的更多技巧。
註:以上參考了
OpenCV Tutorials
OpenCV-Python Tutorials