zoukankan      html  css  js  c++  java
  • python3 验证码图片切割

      切割前图片

      

      切割后四个图片

      

      代码

      

    #coding:utf8
    import os
    from PIL import Image,ImageDraw,ImageFile
    import numpy
    import pytesseract
    import cv2
    import imagehash
    import collections
    class pictureIdenti:
    
        #rownum:切割行数;colnum:切割列数;dstpath:图片文件路径;img_name:要切割的图片文件
        def splitimage(self, rownum=1, colnum=4, dstpath="D:workpython36_crawlVeriycode",
                       img_name="D:workpython36_crawlVeriycodemode_5246.png",):
            img = Image.open(img_name)
            w, h = img.size
            if rownum <= h and colnum <= w:
                print('Original image info: %sx%s, %s, %s' % (w, h, img.format, img.mode))
                print('开始处理图片切割, 请稍候...')
    
                s = os.path.split(img_name)
                if dstpath == '':
                    dstpath = s[0]
                fn = s[1].split('.')
                basename = fn[0]
                ext = fn[-1]
    
                num = 1
                rowheight = h // rownum
                colwidth = w // colnum
                file_list = []
                for r in range(rownum):
                    index = 0
                    for c in range(colnum):
                        # (left, upper, right, lower)
                        # box = (c * colwidth, r * rowheight, (c + 1) * colwidth, (r + 1) * rowheight)
                        if index<1:
                            colwid = colwidth+6
                        elif index<2:
                            colwid = colwidth + 1
                        elif index < 3:
                            colwid = colwidth
    
                        box = (c * colwid, r * rowheight, (c + 1) * colwid, (r + 1) * rowheight)
                        newfile = os.path.join(dstpath, basename + '_' + str(num) + '.' + ext)
                        file_list.append(newfile)
                        img.crop(box).save(os.path.join(dstpath, basename + '_' + str(num) + '.' + ext), ext)
                        num = num + 1
                        index+=1
                for f in file_list:
                    print(f)
                print('图片切割完毕,共生成 %s 张小图片。' % num)
  • 相关阅读:
    box-sizing: border-box的作用
    什么时候用created,什么时候用mounted
    圣杯布局
    关闭浏览器 清除session
    js this
    js 深拷贝
    经常犯的一些小错误
    语法:c++对关于空指针0/NULL/nullptr三者的演变
    常用的函数
    C++一些小技巧
  • 原文地址:https://www.cnblogs.com/shaosks/p/9700610.html
Copyright © 2011-2022 走看看