zoukankan      html  css  js  c++  java
  • python 批量图片拆分

    扫描仪扫出来的A3的图片需要处理拆成2个A4的图片,用这个py处理一下

    # -*- encoding: utf-8 -*-
    """
    # @Time    : 2020-04-03 11:04
    # @Author  : bootloader
    # @Site    : 
    # @File    : 图片切割为原宽度2分之1的2张图片.py
    # @Software: PyCharm
    """
    
    import os
    import time
    
    import cv2
    import numpy as np
    
    # ----------------------------------------------------------------------------------------------------------------
    # --脚本所支持的文件扩展名
    supExpName = ["jpg", "png"]
    
    countNum = 0  # --处理图片计数
    
    print("该脚本将脚本所在目录的所支持的图片拆分为宽度为原来1/2的两个图片")
    print("--程序将在5s后自动执行--脚本执行需要使用 cv2库--")
    print("--使用 pip install opencv-python 命令可以安装该库--")
    print("Loading", end="")
    for i in range(10):
        print(".", end='', flush=True)
        time.sleep(0.5)
    # ----------------------------------------------------------------------------------------------------------------
    # --获取当前路径
    in_dir = os.path.abspath('.') + "/"
    # --设置输出路径
    out_dir = os.path.abspath('.') + "/out_dir/"
    
    # 判断输出文件夹是否存在,若不存在则创建
    if not os.path.exists(out_dir):
        os.mkdir("out_dir")
        print("创建输出目录")
    
    
    # ----------------------------------------------------------------------------------------------------------------
    # --打开图片
    def cv_imread(in_pash):
        cv_img = cv2.imdecode(np.fromfile(in_pash, dtype=np.uint8), -1)  # -1表示cv2.IMREAD_UNCHANGED
        print(os.path.basename(in_pash) + "	宽&高", cv_img.shape[1], cv_img.shape[0])
        return cv_img
    
    
    # --保存图片
    def cv_imwrite(out_path, img_mp):
        cv2.imencode('.png', img_mp)[1].tofile(out_path)
    
    
    # ----------------------------------------------------------------------------------------------------------------
    # --遍历 in_dir 路径下所有文件
    for file_name in os.listdir(in_dir):
        extName = os.path.splitext(file_name)[-1][1:]  # --分离并截取扩展名
        extName = extName.lower()  # --将取得的扩展名转为小写
    
        # --判断文件是否为所支持的图片格式
        if extName in supExpName:
            countNum = countNum + 1;
            print("
    正在处理第 %d 张图片" % (countNum))
            img = cv_imread(in_dir + file_name)
            h, w, w2 = img.shape[0], img.shape[1], img.shape[1] // 2
            # print(h,w,w2)
    
            # print(os.getcwd())  #--这个命令可以用来获取当前脚本所在目录--
            img_name = file_name.split('.')[0]
    
            cropped1 = img[0:int(h), 0:int(w2)]
            cropped2 = img[0:int(h), int(w2):int(w)]
            cv_imwrite(out_dir + img_name + "-1" + ".png", cropped1)
            cv_imwrite(out_dir + img_name + "-2" + ".png", cropped2)
    
    print("--complete--")
    
    # ----------------------------------------------------------------------------------------------------------------
    
    
    
  • 相关阅读:
    【每天都要看一下】
    【这里有别人的经验,也有好玩的发现】
    【WPF】Listbox模板内button点击选中当前listboxItem
    【WFP】弹出窗口不在win10 任务列表里显示的方法
    PSD路径转换为 WPF path 的data
    【WPF】Listbox内item的样式替换默认选中样式和鼠标滑过样式
    【WPF】ListBox1内嵌套ListBox2 2的滑轮滚动阻止1的滚动解决方法
    【C#】文本框拼音检索汉字
    【WPF】Datagrid显示最低下一跳
    【C#】绝对随机数
  • 原文地址:https://www.cnblogs.com/guyk/p/12614888.html
Copyright © 2011-2022 走看看