On Oct 19, 2010, at 6:09 PM, Dewald Pieterse wrote:
> for xiter in range(xindex):
>       for yiter in range(yindex):
>               if edges[xiter,yiter,:] == [255,0,0]:
>                       groenpixelarea = groenpixelarea + 1
>               if edges[xiter,yiter,:] == [0,255,0]:
>                       rooipixelarea = rooipixelarea + 1
>               if edges[xiter,yiter,:] == [0,0,255]:
>                       bloupixelarea = bloupixelarea + 1 
> 
> results in:
> 
>     16 for xiter in range(xindex):
>      17         for yiter in range(yindex):
> ---> 18                 if edges[xiter,yiter,:].any() == [255,0,0]:
>      19                         groenpixelarea = groenpixelarea + 1
>      20                 if edges[xiter,yiter,:] == [0,255,0]:
> 
> ValueError: The truth value of an array with more than one element is 
> ambiguous. Use a.any() or a.all()
> WARNING: Failure executing file: <analiseerverwerkteprent.py>


The array comparison results in an array of booleans, which cannot be used as a 
condition in the if statement. You could use

if alltrue(edges[xiter,yiter,:] == [255,0,0]):
    groenpixelarea = groenpixelarea + 1

There are probably much faster ways to do this that do not require iterating 
over all pixels. You could try

groenpixelarea = sum(alltrue(a.reshape((-1,3)) == array([0,0,255]), axis=1))

Hope this helps,

  Lutz

_______________________________________________
NumPy-Discussion mailing list
[email protected]
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to