1. 程式人生 > >Python 處理圖片畫素點

Python 處理圖片畫素點

###在做爬蟲的時候有時需要識別驗證碼,但是驗證碼一般都有干擾物,這時需要對驗證碼進行預處理,效果如下:
這裡寫圖片描述
這裡寫圖片描述

from PIL import Image
import itertools
img = Image.open('C:/img.jpg').convert('L') #開啟圖片,convert影象型別有L,RGBA

# 轉化為黑白圖
def blackWrite(img):
    blackXY = []

    # 遍歷畫素點
    for x in range(img.size[0]):
        for y in range(img.size[1]):
            print img.getpixel((x,y))
            if img.getpixel((x,y))<128:
                img.putpixel((x,y),0) # 置為黑點
                blackXY.append((x,y))
            else:
                img.putpixel((x,y),255) # 置為白點
    return blackXY


# 去除干擾點
def clrImg(img,pointArr):
    # 獲取周圍黑點的個數
    def getN(p):
        count = 0
        x = [p[0]-1,p[0],p[0]+1]
        y = [p[1]-1,p[1],p[1]+1]
        for i in itertools.product(x,y):  # 笛卡爾積
            try:
                if img.getpixel(i) == 0:
                    count +=1
            except:
                print 'out of'
                continue
        print count
        return count

    for p in pointArr:
        if getN(p)<5:  #  周圍黑點個數 <5 的黑點認為是干擾點,置為白點
            img.putpixel(p,255)
         
pointArr =  blackWrite(img)
clrImg(img,pointArr)
img.save("C:/img_1.jpg")