我有一些影像,我將它們轉換為灰度并通過通常的步驟對它們進行閾值處理:
image = cv2.imread('img_path')
image_gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)
ret, frame_thresh = cv2.threshold(image_gray,128,255,cv2.THRESH_BINARY)
如何檢查生成的影像主要是黑色還是白色?我嘗試使用直方圖:
hist = cv2.calcHist([frame_thresh], [0], None, [2], [0, 1])
hist_ok /= hist_ok.sum()
但我在兩張影像上對其進行了測驗,其中一張(一張大部分是黑色,另一張大部分是白色),并且生成的 hist 總是相同的
print(hist)
>> [[1.]
[0.]]
uj5u.com熱心網友回復:
您正在尋找影像的平均像素值,為此您可以使用 numpy:
import numpy as np
avg_color_per_row = np.average(frame_thresh, axis=0)
avg_color = np.average(avg_color_per_row, axis=0)
它輸出一個范圍從 0 到 255 的值。
uj5u.com熱心網友回復:
閾值處理后,您的影像僅包含黑色 (0) 和白色 (255) 像素。您可以使用countNonZero函式來計算非零像素(非黑色)的數量并將其與影像大小進行比較。
或者,您可以只計算影像的平均值。如果其低于 127(范圍的一半)影像大部分是黑色的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/339336.html
