On Feb 18, 1:58 pm, 7stud <[EMAIL PROTECTED]> wrote: > On Feb 18, 10:18 am, vaneric <[EMAIL PROTECTED]> wrote: > > > > > hi > > i have a set of RGB images of diff faces (of people )as a 2 dim > > numpyarray > > ..something like > > threefaces=array([[xa1,xa2,xa3], > > [xb1,xb2,xb3], > > [xc1,xc2,xc3]]) > > where xa1,xa2,xa3 are tuples each representing rgb values of a pixel > > of first image .. > > > i need to create the average face image and display it.problem is i > > need to calculate (xa1+xb1+xc1)/3 etc to calculate avearge value of > > each pixel.how can i do this calculation.do i need to convert the > > r,g,b in to a single value for each pixel? the average value of a > > pixel will be a float isn't it? how can i create a PIL image from > > this? > > any help,directive greatly appreciated > > eric > > import Numeric > > arr = Numeric.array([ > [1, 2, 3], > [4, 5, 6], > [7, 8, 9], > [10, 11, 12] > ]) > > col1 = arr[0:,0] > print col1 > > sum = 0 > count = 0 > for num in col1: > sum += num > count += 1 > > avg = (sum * 1.0)/count #convert one term to a float to get float > result > print avg > print round(avg) > print int(round(avg)) > > print arr[0] > > size = len(arr[0]) > for i in range(size): > col = arr[0:, i] > sum = 0 > count = 0 > > for num in col: > sum += num > count += 1 > > result = (sum * 1.0) /count > print result, > result = int(round(result)) > print result > > --output:-- > [ 1 4 7 10] > 5.5 > 6.0 > 6 > [1 2 3] > 5.5 6 > 6.5 7 > 7.5 8
In this statement: > col1 = arr[0:,0] the first term is the row or row range, and the second term is the column or column range. If you write this: num = arr[0,0] you get the element in row 0, column 0. But you can also specify ranges for each col or row: num = arr[1:, 2:] That says to get all elements from row 1 to the bottom that are in from column 2 to the end of the row. -- http://mail.python.org/mailman/listinfo/python-list