У меня есть массив Numpy (это красный канал изображения).
Я замаскировал его часть (делая эти значения 0), и теперь я хотел бы найти режим значения в моей немаскированной области.
Проблема, с которой я сталкиваюсь, состоит в том, что команда Mode продолжает возвращаться с [0]. Я хочу исключить 0 значений (замаскированную область), но я не уверен, как это сделать?
Это команда, которую я использовал, чтобы попробовать и получить режим:
#mR is the Numpy Array of the Red channel with the values of the areas I don't want at 0
print(stats.mode(mR[:, :], axis=None))
Возвращает 0 в качестве моего режима. Как исключить 0 или замаскированную область?
Обновление - Полный код:
Вот мой полный код с использованием "face" из scipy.mis c - все еще кажется медленным с этим изображением, и в результате получается «107», что является слишком высоким значением для маскированной области (теней), поэтому кажется, что он обрабатывает все изображение, а не только область в маске.
import cv2
import numpy as np
from scipy import stats
import scipy.misc
img = scipy.misc.face()
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
r, g, b = cv2.split(img_rgb)
img_lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB)
l_channel ,a_channel, b_channel = cv2.split(img_lab)
mask = cv2.inRange(l_channel, 5, 10)
cv2.imshow("mask", mask)
print(stats.mode(r[mask],axis=None))
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.waitKey(1)