I have a small image with a black background and red lines in it and I need to count the red pixels. I know I need PIL, but I'm not sure which method to use. Then once I have the counts I need to equate them to a character, so if the red lines in the image form a circle and have x amount of red pixels, its = '0', and if the image forms a straight line and is found to have x amount of pixels it's = 'l'.

import Image
#mypic.jpg is the circle
# if statement here

Any suggestions?

8 Years
Discussion Span
Last Post by vegaseat

Could you test how many pixels are red? Because a circle will require many more pixels to draw then a line.
I know when getting colours i used something like:

import Image
im = image.open("myPic.jpg")
for pixel in im.getdata():
    #check if it is red

Played around with it a little ...

# use PIL to count pixels in letters I and O
# image file needs to be a bitmap file to maintain
# red (255,0,0) and black (0,0,0) pixel colors correctly

from PIL import Image

# img_I.bmp --> 50x50 black bg + red I (times new roman, bold, 24)
img_I = Image.open("img_I.bmp").getdata()

# img_O.bmp --> 50x50 black bg + red O (times new roman, bold, 24)
img_O = Image.open("img_O.bmp").getdata()

# count red pixels of the I
# list(img_I) is a list of (r,g,b) color tuples for each pixel
# where (255,0,0) would be the red pixel
red_I = 0
for red in list(img_I):
    if red == (255,0,0):
        red_I += 1

print red_I  # 76

# count red pixels of the O
red_O = 0
for red in list(img_O):
    if red == (255,0,0):
        red_O += 1

print red_O  # 126
This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.