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