在python中查找指定范围内的图像像素的坐标

时间:2015-03-22 07:32:07

标签: python image-processing numpy logical-operators

我在python中加载了一个灰度图像作为numpy数组。我想找到图像强度在指定范围内的坐标,比如说[lowerlim,upperlim]。我尝试使用numpy.where作为

np.where(image>lowerlim and image<upperlim)

但是它给出了错误 - &#39;具有多个元素的数组的真值是不明确的。&#39;谁能指导我如何在python中做到这一点?

1 个答案:

答案 0 :(得分:1)

正如评论中所说,如果你想使用逻辑和numpy数组,你需要使用np.logical_and,并且为了选择指定的元素,你可以将np.where传递给你的数组:

>>> a
array([[[ 2,  3],
        [ 4,  5]],

       [[ 9, 10],
        [20, 39]]])
>>> np.where(np.logical_and(3<a,a<10))
(array([0, 0, 1]), array([1, 1, 0]), array([0, 1, 0]))
>>> a[np.where(np.logical_and(3<a,a<10))]
array([4, 5, 9])

或者您可以直接使用np.extract代替np.where

>>> np.extract(np.logical_and(3<a,a<10),a)
array([4, 5, 9])