【发布时间】:2020-04-28 18:43:37
【问题描述】:
我有一个 Numpy 数组(它是图像中的红色通道)。
我已经屏蔽了其中的一部分(将这些值设为 0),现在我想在我的非屏蔽区域中找到值的模式。
我遇到的问题是模式命令不断返回 [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 或被遮罩的区域?
更新 - 完整代码:
这是我使用 scipy.misc 中的“面部”的完整代码 - 该图像仍然看起来很慢,结果是“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)
【问题讨论】:
-
在参数中尝试 mR[mask]
-
除非我遗漏了什么,你不能用掩码只选择你想要的值/元素吗?
-
完整输出是什么?
-
请发布您的完整代码
-
@jtlz2 - 上面发布的完整代码 - 使用来自 scipy 的“面部”图像,它仍然运行缓慢并且给了我错误的值(似乎忽略了掩码)。
标签: python numpy image-processing