一、cv2.mean函數
mean = cv2.mean(src[, mask])
cv2.mean函數用於計算圖像的均值。在單通道灰度圖像中計算的結果是一個標量(一個數),在多通道(彩色)圖像中計算的結果是所有通道均值組成的元組。
1、單通道灰度圖像均值計算
import cv2
# 讀取灰度圖像
img = cv2.imread('gray_img.png', 0)
# 計算灰度圖像均值
mean = cv2.mean(img)
print('灰度圖像均值:', mean[0])
在上面的代碼中,我們首先讀取一個灰度圖像,然後使用cv2.mean函數計算該圖像的均值。結果是一個元組,其中第一個元素就是灰度圖像的均值,我們使用mean[0]來獲取它。
2、多通道(彩色)圖像均值計算
import cv2
# 讀取彩色圖像
img = cv2.imread('color_img.png')
# 計算彩色圖像均值
mean = cv2.mean(img)
print('彩色圖像均值:', mean)
在上面的代碼中,我們讀取了一張彩色圖像,然後使用cv2.mean函數計算該圖像的均值。因為彩色圖像有三個通道(B、G、R),所以計算的結果是一個三元素的元組,分別是三個通道的均值。
二、cv2.meanstddev函數
mean, stddev = cv2.meanStdDev(src[, mask])
cv2.meanstddev函數用於計算圖像的均值和標準差。在單通道灰度圖像中計算的結果是兩個標量,一個是均值,一個是標準差。在多通道(彩色)圖像中計算的結果是每個通道的均值和標準差組成的元組(均值和標準差都是各自計算得到的)。
1、單通道灰度圖像均值和標準差計算
import cv2
# 讀取灰度圖像
img = cv2.imread('gray_img.png', 0)
# 計算灰度圖像均值和標準差
mean, stddev = cv2.meanStdDev(img)
print('灰度圖像均值:', mean[0])
print('灰度圖像標準差:', stddev[0])
在上面的代碼中,我們首先讀取一個灰度圖像,然後使用cv2.meanstddev函數計算該圖像的均值和標準差。結果是一個元組,第一個元素是灰度圖像的均值,第二個元素是灰度圖像的標準差,我們使用mean[0]和stddev[0]來獲取它們。
2、多通道(彩色)圖像均值和標準差計算
import cv2
# 讀取彩色圖像
img = cv2.imread('color_img.png')
# 計算彩色圖像均值和標準差
mean, stddev = cv2.meanStdDev(img)
print('藍色通道均值:', mean[0][0])
print('綠色通道均值:', mean[1][0])
print('紅色通道均值:', mean[2][0])
print('藍色通道標準差:', stddev[0][0])
print('綠色通道標準差:', stddev[1][0])
print('紅色通道標準差:', stddev[2][0])
在上面的代碼中,我們讀取了一張彩色圖像,然後使用cv2.meanstddev函數計算該圖像的均值和標準差。因為彩色圖像有三個通道(B、G、R),所以計算的結果是一個三元素的元組,每個元素都是一個兩元素的元組,分別是每個通道的均值和標準差。我們使用mean[i][0]和stddev[i][0]來獲取第i個通道的均值和標準差。
三、cv2.mean和cv2.meanstddev的比較
cv2.mean和cv2.meanstddev都可以用來計算圖像的均值,但是它們的適用場景有所不同。
當我們只需要知道一個圖像的均值時,可以直接使用cv2.mean函數,因為它比cv2.meanstddev函數更快捷、更簡單。
而當我們需要同時知道圖像的均值和標準差時,需要使用cv2.meanstddev函數,因為它可以同時計算均值和標準差,而cv2.mean函數只能計算均值。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/188811.html