当前位置 博文首页 > 如何利用python实现图片批处理

    如何利用python实现图片批处理

    作者:会飞的小菜鸡 时间:2021-05-04 18:09

    前言

    在训练神经网络之前,我们往往需要对数据集进行批量处理。本文以图片为例,介绍如何使用python实现图片的批量处理,包括批量命名,批量更改图像像素,批量对图片进行Harris、Canny……

    在此通过以下示例讲解图片遍历方法,并以shi-Tomasi角点检测算法为例,对图片进行批量处理。

    可实现的功能:

    (1)遍历某一文件夹下的所有图片,示例代码针对所有.jpg格式的图片;

    (2)对所有图片均进行shi-Tomasi角点检测处理;

    (3)将处理好后的每张图片保存至新的文件夹下。

    import cv2
    import numpy as np
    import glob
    import os
    
    def Harris(img):
    # 1 读取图像,并转换成灰度图像
     gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # 2角点检测——Shi-Tomasi
     corners = cv2.goodFeaturesToTrack(gray,100,0.01,10)
     corners = np.int0(corners)
     print(len(corners))
     for i in corners:
      x, y = i.ravel()
      cv2.circle(img, (x, y), 3, 255, -1)
     return img
    # 图片批量处理
    def pichuli():
     nums = 1
     for files in glob.glob(r'C:\Users\********\*.jpg'):
      img = cv2.imread(files)
      # 输出路径
      opfile = r'C:\Users\***********/'
      # 判断opfile是否存在,不存在则创建
      if (os.path.isdir(opfile) == False):
       os.mkdir(opfile)
      img = Harris(img)
      image_path = opfile + '('+str(nums)+')'+'.jpg'
      cv2.imwrite(image_path,img)
      nums += 1
     print('批处理结束')
    
    if __name__ == '__main__':
     pichuli()
    

    Python批量修改图片大小

    # -*- coding: utf-8 -*- 
    ''' 
     
    ''' 
    import os 
    from PIL import Image 
     
    pic_dir = r"H:\新建文件夹" 
    for filename in os.listdir(path=pic_dir): 
      if filename.startswith("SAM"): 
        pic_path = os.path.join(pic_dir, filename) 
        print (pic_path) 
        img = Image.open(pic_path ) 
        new_size = tuple( [ size//3 for size in img.size] ) # 高度、宽度均变为原来的1/3 
        new_img = img.resize( new_size) 
        new_name = os.path.join(pic_dir, "small_" + filename) 
        new_img.save(new_name )

    总结

    js
    下一篇:没有了