def carveVSeam(cim, seam): 'Removes a given seam from an image, and returns resulting image.' cimout = CImage(cim.width-1,cim.height) for y in cim.yrange(): for x in range(0,seam[y]): cimout.pix[x,y] = cim.pix[x,y] for x in range(seam[y],cim.width-1): cimout.pix[x,y] = cim.pix[x+1,y] return cimout
def insertVSeam(cim, seam): print seam 'Insert a seam into the image and returns resulting image.' cimout = CImage(cim.width + 1, cim.height) seamIndex = 0 for y in cim.yrange(): for x in range(0, seam[y]): cimout.pix[x,y] = cim.pix[x,y] #average of the surrounding pixels cimout.pix[seam[y], y] = getAverage(cim, seam[y], y) for x in range(seam[y]-1, cim.width-1): #copy over the pixels cimout.pix[x+2, y] = cim.pix[x+1,y] return cimout
cimout.pix[x,y] = cim.pix[x,y] for x in range(seam[y],cim.width-1): cimout.pix[x,y] = cim.pix[x+1,y] return cimout def findEdges(cim): 'Returns a CImage containing the energy function of this image' return CImage(cim.im.filter(ImageFilter.FIND_EDGES).filter(ImageFilter.BLUR).convert('I')) def markVSeam(cim, seam): 'Fills in an image with yellow along the given seam.' for y in cim.yrange(): cim.pix[seam[y],y] = (255,255,0) cim0 = CImage(img) cim0.show(canvas) cim1 = CImage(cim0.im) cimold = CImage(cim0.im) cime = findEdges(cim1) def show0(event): cim0.show(canvas) def show1(event): cim1.show(canvas) def show2(event): cime.show(canvas) def delseam(event): global cime, cim1, cimold tstart = time.time()