验证码识别之图像切割算法(二)
备注(易拍全球)
切割前: 切割后:
切割前: 切割后:
好了,上代码:
#-*-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)
如果觉得对您有帮助,麻烦您点一下推荐,谢谢!
好记忆不如烂笔头
好记忆不如烂笔头