Python绘制图片图像轮廓算法

最近在研究图像的一系列算法,今天发现Python的PIL中自带了filter算法,于是拿自己手头的算法来和它做了个对比,在经过简单的修改之后,用这个算法画出了和img.filter(ImageFilter.CONTOUR)一样的图像,不是相似,是几乎一摸一样!来看图:

图1,原图

图2,我的算法

图3,img.filter(ImageFilter.CONTOUR)

 

来看代码:

 

为了防止变型,使用的是图片,下面是代码:

 

import os
import Image,ImageFilter
 
def makeimageslide(imgpath,savepath):
    img=Image.open(imgpath)
    w,h=img.size
    #Laplacian = [ -1, -1, -1, -1, 8, -1, -1, -1, -1 ];
    Laplacian = [ 1, 1, 1, 1, -8, 1, 1, 1, 1 ];
    x,y=1,1
    newimg=Image.new("RGB", img.size, 0xffffff)
    while x<w-1:
        while y<h-1:
            index=0
            point=(x,y)
            r,g,b=0,0,0
            col,row=-1,-1
            while col<2:
                while row<2:
                    tr,tg,tb=img.getpixel((x + row,y + col))
                    r=r+tr*Laplacian[index]
                    g=g+tg*Laplacian[index]
                    b=b+tb*Laplacian[index]
                    index=index+1
                    row=row+1
                row=-1
                col=col+1
            if r>255:
                r=255
            if g>255:
                g=255
            if b>255:
                b=255
            if r<0:
                r=0
            if g<0:
                g=0
            if b<0:
                b=0                                    
            newimg.putpixel((x,y),(255-r,255-g,255-b))
            y+=1
        y = 1
        x+=1
    newimg.save(savepath)
    
def autoimageslide(imgpath,savepath):
    img=Image.open(imgpath)
    newimg2 = img.filter(ImageFilter.CONTOUR)
    newimg2.save(savepath)    
    
if __name__ == "__main__":
    makeimageslide("C:\\1.jpg","C:\\2.jpg")
    autoimageslide("C:\\1.jpg","C:\\3.jpg")
评论 (0) 分享 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址