import cv

def doCanny(input, lowThresh, highThresh, aperture):

        if input.nChannels != 1:

                return(0)

        out = cv.CreateImage((input.width, input.height), input.depth, 1)

        cv.Canny(input, out, lowThresh, highThresh, aperture)

        return out

def doPyrDown(input):

    assert(input.width !=0 and input.height !=0)

    out = cv.CreateImage((input.width/2, input.height/2), input.depth, input.nChannels)

    cv.PyrDown(input, out)

    return out

img = cv.LoadImage("lena.jpg")

img2 = cv.CreateImage((img.width, img.height), img.depth, 1)

cv.CvtColor(img, img2, cv.CV_BGR2GRAY)

cv.NamedWindow("Example GRAY", cv.CV_WINDOW_AUTOSIZE)

cv.ShowImage("Example GRAY", img2)

img3 = doCanny(img2, 10, 100, 3)

img2 = doPyrDown(img3)

cv.ShowImage("Example 2", img2)

cv.WaitKey(0)