CV2 是 Python 中使用最廣泛的計算機視覺庫,可以完成從圖像讀取到圖像輸出、圖像轉換、特徵檢測與提取、目標識別,人臉識別等功能;而在計算機視覺中對於圖像處理的一個基本步驟就是將彩色圖像轉換為灰度圖像。在本文中,我們將詳細闡述 CV2 如何實現灰度圖像轉換。
一、什麼是灰度圖像?
灰度圖像簡單來說就是只有黑、白、灰三種顏色的圖像。而在計算機中,灰度圖像是通過將彩色圖像的每個像素點的R、G、B三個通道的值按照一定的加權求和轉化為一種灰度的表現方式。
二、如何使用 CV2 轉換成灰度圖?
CV2 中提供了一個函數 cvtColor(),可以實現圖像的顏色空間轉換。在轉化成灰度圖像中,我們使用的是 cv2.COLOR_BGR2GRAY。這是因為 OpenCV 讀入的圖像格式是 BGR 格式(即顏色通道順序為 blue-green-red),而不是 RGB(red-green-blue)格式。
import cv2
# 讀入彩色圖像
img = cv2.imread('image.jpg')
# 轉換成灰度圖像
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 顯示灰度圖像
cv2.imshow('Gray Image',gray_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
三、轉換過程中的加權演算法
在將彩色圖像轉換成灰度圖像時,每個像素的 RGB 值通過加權演算法轉換成對應的灰度值。在這個過程中,我們在不同的應用場景下,可能會有不同的加權演算法。
OpenCV 中默認的加權演算法如下:
- Gray = 0.299 × R + 0.587 × G + 0.114 × B
該演算法是以人眼對彩色敏感程度不同為基礎的,R、G、B 三個顏色的取值範圍均為 0~255。
四、如何優化演算法?
如果我們對於該演算法不滿意,可以進行自定義。例如想讓加權演算法更注重紅色通道,可以重寫加權公式。
# 加權演算法 (更注重紅色通道)
gray_img = 0.3 * img[:, :, 2] + 0.59 * img[:, :, 1] + 0.11 * img[:, :, 0]
此時,我們使用更高的權重給了紅色,造成灰度圖像偏紅。
五、總結
CV2 轉換灰度圖是計算機視覺處理中不可缺少的步驟,灰度圖像比彩色圖像更具有穩定性,在許多圖像處理任務中應用廣泛。在轉換過程中,CV2 中提供的函數 cvtColor() 使轉換過程變得非常簡單和方便。同時,我們也可以根據不同需要自定義加權演算法進行更優化的轉換。
原創文章,作者:RUKBP,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/371238.html