python - 制作由掩码选择的像素列表

标签 python opencv

我有一个图像和一个从该图像中选择像素的蒙版。我想列出这些像素,然后使用 scipy.kmeans 对它们进行聚类分析。
有没有比这更好的方法(例如我不知道的函数)

pixels = []
for irow,mrow in zip(img,mask):
    pixels += [pixel for pixel,mbyte in zip(irow,mrow) if mbyte==255]

最佳答案

使用 numpy - boolean or "mask" index array :

>>> import numpy as np
>>> img = np.array([[1, 2, 3],
...                 [4, 5, 6]])
>>> mask = np.array([[0, 255, 0],
...                  [255, 0, 0]])
>>> img[mask == 255]
array([2, 4])
如果你想要 list而不是 numpy.array , 使用 list转换结果:
>>> list(img[mask == 255])
[2, 4]

关于python - 制作由掩码选择的像素列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42459184/

相关文章:

python - 如何签署 OKEx API 请求?

python - 用于在内存中维护表格数据的数据结构?

python - 使用 python argparse 递归

python - 如何在 Python 中打印特定的 JSON 值?

opencv - 使用词袋/特征和神经网络

c++ - 如何使用 C++ 在 OpenCV 3.0 中使用 SIFT?

python - 通过使用函数关联多个列来填充

python - Cmake - 使用 OpenCV 生成共享库

java - cvHoughLines2 的内存释放问题

python - 在Python中计算图像中不同颜色的对象数