驗證碼識別之圖像切割算法(二)


備注(易拍全球)

切割前:       切割后:                                 

 

切割前:     切割后:                    

 

好了,上代碼:

#-*-coding:utf-8-*-


from PIL import Image



def smartSliceImg(img, outDir, count=4, p_w=3):
    '''
    :param img:
    :param outDir:
    :param count: 圖片中有多少個圖片
    :param p_w: 對切割地方多少像素內進行判斷
    :return:
    '''
    w, h = img.size
    pixdata = img.load()
    eachWidth = int(w / count)
    beforeX = 0
    for i in range(count):

        allBCount = []
        nextXOri = (i + 1) * eachWidth

        for x in range(nextXOri - p_w, nextXOri + p_w):
            if x >= w:
                x = w - 1
            if x < 0:
                x = 0
            b_count = 0
            for y in range(h):
                if pixdata[x, y] == 0:
                    b_count += 1
            allBCount.append({'x_pos': x, 'count': b_count})
        sort = sorted(allBCount, key=lambda e: e.get('count'))

        nextX = sort[0]['x_pos']
        box = (beforeX, 0, nextX, h)
        img.crop(box).save(outDir + str(i) + ".png")
        beforeX = nextX


img = Image.open('2.jpg')
outDir = 'cd/'
smartSliceImg(img, outDir, count=4, p_w=3)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM