Created
February 25, 2017 13:34
-
-
Save kmohrf/8d4653536aaa88965a69a06b81bcb022 to your computer and use it in GitHub Desktop.
Calculate Image brightness with Python Pillow
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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))) |
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
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
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?