Here is the code i'm using:
from PIL import Image from pylab import * import numpy as np inputImage='C:\Test\Test1.jpg' ##outputImage='C:\Test\Output\Test1.jpg' pilImage=Image.open(inputImage) pilImage.draft('L',(500,500)) imageArray= np.asarray(pilImage) imshow(imageArray) ##pilImage.save(outputImage) axis('off') show()
My Problem: The image get's displayed like the colours are inverted.
But I know that the image is getting converted to grayscale, because when I write it to the disk it is appearing as a grayscale image.(Just as I expect).
I feel that the problem is somewhere in the numpy conversion.
I've just started programming in Python for Image Processing. And Tips and Guideline will also be appreciated.
You want to over-ride the default color map:
This produces a B&W image:
pilImage=Image.open(inputImage) pilImage = pilImage.convert('1') #this convert to black&white pilImage.draft('L',(500,500)) pilImage.save('outfile.png')
convert method docs:
convert im.convert(mode) => image Returns a converted copy of an image. When translating from a palette image, this translates pixels through the palette. If mode is omitted, a mode is chosen so that all information in the image and the palette can be represented without a palette. When from a colour image to black and white, the library uses the ITU-R 601-2 luma transform: L = R * 299/1000 + G * 587/1000 + B * 114/1000 When converting to a bilevel image (mode "1"), the source image is first converted to black and white. Resulting values larger than 127 are then set to white, and the image is dithered. To use other thresholds, use the point method.