def MedianImageColor(InputImage, Ignore=None): InputImage = InputImage.convert('L') InputImagePixels = InputImage.load() # flatten the image so that we can take the median ColoredImage = PILToCV2(InputImage) GreyImage = cv2.cvtColor(ColoredImage, cv2.COLOR_BGR2GRAY) FlatImage = GreyImage.flatten() if Ignore != None: PrunnedImage = [] for Item in FlatImage: if Item != Ignore: PrunnedImage.append(Item) return Statistics.Median(PrunnedImage) else: # take the median return Statistics.Median(FlatImage)
def MedianArray(Array, SampleSize, FillerValue=255): if SampleSize % 2 != 0: raise ValueError("SampleSize must be even.") ReturnArray = [] ValuesArray = [] for i in range(0, len(Array)): ValuesArray.append([]) # we keep the array the same size, so sometimes the sample size will be smaller HalfSampleSize = int(SampleSize / 2.0) # +1 because of how range() works for p in range(-HalfSampleSize, HalfSampleSize + 1): if (i + p) < 0 or (i + p) >= len(Array): ValuesArray[i].append(FillerValue) else: ValuesArray[i].append(Array[i + p]) for Items in ValuesArray: ReturnArray.append(Statistics.Median(Items)) return ReturnArray