On Wed, Oct 20, 2010 at 1:32 AM, Lutz Maibaum <[email protected]>wrote:
> 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 > This worked. > 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)) > > This worked way faster, awesome. > Hope this helps, > > Lutz > > Thanks for all the help. -- Dewald Pieterse
_______________________________________________ NumPy-Discussion mailing list [email protected] http://mail.scipy.org/mailman/listinfo/numpy-discussion
