Skip to content

Instantly share code, notes, and snippets.

@kmohrf
Created February 25, 2017 13:34
Show Gist options
  • Save kmohrf/8d4653536aaa88965a69a06b81bcb022 to your computer and use it in GitHub Desktop.
Save kmohrf/8d4653536aaa88965a69a06b81bcb022 to your computer and use it in GitHub Desktop.
Calculate Image brightness with Python Pillow
import sys
from PIL import Image
def calculate_brightness(image):
greyscale_image = image.convert('L')
histogram = greyscale_image.histogram()
pixels = sum(histogram)
brightness = scale = len(histogram)
for index in range(0, scale):
ratio = histogram[index] / pixels
brightness += ratio * (-scale + index)
return 1 if brightness == 255 else brightness / scale
if __name__ == '__main__':
for file in sys.argv[1:]:
image = Image.open(file)
print("%s\t%s" % (file, calculate_brightness(image)))
@TylerG398
Copy link

In my case imaged below 45 threshold were considered dark..
Try to play with image sizes and Percentage of circles
In this code is 3% distance between circles try to have 1% for a better precision

so what is the number representative of... I understand brightness but what is it specifically? whats it comparing it to? and circles? what do you mean by circles? and if I use PIL and manually set the brightness of an image to .5 that's saying set it to 50% of original brightness, however, I want to match the brightness of another image, will I be able to literally set the second image to the result of this code? or is that the wrong number?

@imneonizer
Copy link

This code gives average brightness level of an image, those circles are indicating that we are picking 3x3 matrix segment of image from that part and finding the brightness and we are doing it for each segment i.e each circles and at the end we are finding average out of them.
There is no absolute value for brightness or darkness higher the value more brighter the image

@sammilei
Copy link

Does anyone know the motivation for the implementation? why does it subtract from the length/range of the histogram?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment