使用 OpenCV 將影像轉換為灰度
將影像轉換為灰度包括將彩色影像轉換為灰度影像。透過使用OpenCV庫中的各種方法,我們可以將彩色影像(具有多個顏色通道)轉換為灰度影像(具有單個通道)。以下是使用 OpenCV 將影像轉換為灰度的一些常用方法。
-
cv2.cvtColor():此函式用於將影像從一個顏色空間轉換為另一個顏色空間。
-
畫素操作:它涉及手動取顏色通道的平均值以建立灰度影像。
-
去飽和度方法:此方法嘗試透過考慮分量的最大值和最小值來保留影像的對比度。
使用 cv2.cvtColor()
cv2.cvtColor() 使用顏色通道的加權和將影像轉換為灰度,以反映人類的感知。
示例
在下面的示例程式碼中,cv2.imread() 函式載入影像,並使用 cv2.cvtColor() 函式將其轉換為灰度。
import cv2
# Read the image
image = cv2.imread('apple.jpg')
# Convert the image to grayscale
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# Display the grayscale image (optional)
cv2.imshow('Grayscale Image', gray_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
輸出
輸入影像

灰度影像

使用畫素操作
這種畫素操作方法也稱為平均方法,它涉及透過手動計算每個畫素的紅色、綠色和藍色通道的強度平均值來計算灰度值。
示例
手動平均是指透過計算每個畫素的 B、G 和 R 通道的平均值來計算灰度值。
import cv2
import numpy as np
# Read the image
image = cv2.imread('apple.jpg')
# Manually convert to grayscale using the average method
gray_image = np.zeros(image.shape[:2], dtype='uint8')
for i in range(image.shape[0]):
for j in range(image.shape[1]):
# Calculate the average of the B, G, R values
gray_image[i, j] = np.mean(image[i, j])
# Display the grayscale image
cv2.imshow('Grayscale Image', gray_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
輸出
輸入影像

灰度影像

使用去飽和度
此方法取每個畫素的紅色、綠色和藍色通道的最大值和最小值的平均值,並透過同時考慮最暗和最亮的分量來保留對比度。
示例
灰度值計算為 gray=Max(R, B, G)+Min(R, B, G)/2。由於其對真實亮度的表示,此方法與cv2.cvtColor()使用的加權方法相比,可能會返回不太準確的灰度影像。
import cv2
import numpy as np
image = cv2.imread('apple.jpg')
max_channel = np.max(image, axis=2)
min_channel = np.min(image, axis=2)
gray_image = ((max_channel + min_channel) / 2).astype(np.uint8)
cv2.imwrite('desaturation_gray_image.jpg', gray_image)
輸出
輸入影像

灰度影像

廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP