zoukankan      html  css  js  c++  java
  • python基于pillow库的简单图像处理

    from PIL import Image
    from PIL import ImageFilter
    from PIL import ImageEnhance
    import matplotlib.pyplot as plt
    
    # 将彩色图片转成灰度图片
    img = Image.open('pic.jpg') # 读取图片
    gray = img.convert('L') # 转成灰度图
    plt.figure('将彩色图片转成灰度图片')
    plt.subplot(1,2,1)
    plt.title("original image") # 设置标题
    plt.imshow(img) # 显示原始图片
    plt.axis('off') # 不显示坐标轴
    plt.subplot(1,2,2)
    plt.title('gray image') # 设置标题
    plt.imshow(gray,cmap = 'gray')
    plt.axis('off')
    plt.show() # 显示图片框
    
    # 裁剪图像
    img = Image.open('pic.jpg')  # 读取图片
    plt.figure("裁剪图像")
    plt.subplot(1,2,1)
    plt.title('original image') # 设置标题
    plt.imshow(img) # 显示原始图片
    plt.axis('off') # 不显示坐标轴
    img_size = img.size # 获取图像大小
    start_x = int(img_size[0]/2)
    end_x = img_size[0]
    start_y = int(img_size[1]/2)
    end_y = img_size[1]
    box = (start_x,start_y,end_x,end_y) # 定义裁剪区间
    roi = img.crop(box)     # 裁剪
    plt.subplot(1,2,2)
    plt.title('cropped image') # 设置标题
    plt.imshow(roi) # 显示裁剪后的图片
    plt.axis('off') # 不显示坐标轴
    plt.show() # 显示图片框
    
    # 旋转图像
    img = Image.open('pic.jpg')  # 读取图片
    plt.figure("旋转图像")
    plt.subplot(1,2,1)
    plt.title('original image') # 设置标题
    plt.imshow(img) # 显示原始图片
    plt.axis('off') # 不显示坐标轴
    dst = img.rotate(45) # 顺时针旋转45度
    plt.subplot(1,2,2)
    plt.title('rotated image') # 设置标题
    plt.imshow(dst) # 显示裁剪后的图片
    plt.axis('off') # 不显示坐标轴
    plt.show()  # 显示图片框
    
    # 寻找边缘信息的滤波
    img = Image.open('pic.jpg')  # 读取图片
    gray = img.convert('L') # 转成灰度图
    plt.figure("边缘信息滤波")
    plt.subplot(1,2,1)
    plt.title('original image') # 设置标题
    plt.imshow(gray,cmap = 'gray') # 显示原始图片
    plt.axis('off') # 不显示坐标轴
    im = gray.filter(ImageFilter.FIND_EDGES) # 边缘滤波
    plt.subplot(1,2,2)
    plt.title('edge filtering') # 设置标题
    plt.imshow(im,cmap = 'gray') # 显示裁剪后的图片
    plt.axis('off') # 不显示坐标轴
    plt.show()  # 显示图片框
    
    # 浮雕滤波
    img = Image.open('pic.jpg')  # 读取图片
    gray = img.convert('L') # 转成灰度图
    plt.figure("浮雕滤波")
    plt.subplot(1,2,1)
    plt.title('original image') # 设置标题
    plt.imshow(gray,cmap = 'gray') # 显示原始图片
    plt.axis('off') # 不显示坐标轴
    im =  gray.filter(ImageFilter.EMBOSS) # 浮雕滤波
    plt.subplot(1,2,2)
    plt.title('embossed filtering') # 设置标题
    plt.imshow(im,cmap = 'gray') # 显示裁剪后的图片
    plt.axis('off') # 不显示坐标轴
    plt.show()  # 显示图片框
    
    # 轮廓滤波
    img = Image.open('pic.jpg')  # 读取图片
    gray = img.convert('L') # 转成灰度图
    plt.figure("轮廓滤波")
    plt.subplot(1,2,1)
    plt.title('original image') # 设置标题
    plt.imshow(gray,cmap = 'gray') # 显示原始图片
    plt.axis('off') # 不显示坐标轴
    im =  gray.filter(ImageFilter.CONTOUR) # 轮廓滤波
    plt.subplot(1,2,2)
    plt.title('contour filtering') # 设置标题
    plt.imshow(im,cmap = 'gray') # 显示裁剪后的图片
    plt.axis('off') # 不显示坐标轴
    plt.show()  # 显示图片框
    
    # 图像增强
    img = Image.open('pic.jpg')  # 读取图片
    gray = img.convert('L') # 转成灰度图
    plt.figure("图像增强")
    plt.subplot(1,2,1)
    plt.title('original image') # 设置标题
    plt.imshow(gray,cmap = 'gray') # 显示原始图片
    plt.axis('off') # 不显示坐标轴
    im = ImageEnhance.Color(gray).enhance(0.5) # 图像增强
    plt.subplot(1,2,2)
    plt.title('enhanced image') # 设置标题
    plt.imshow(im) # 显示裁剪后的图片
    plt.axis('off') # 不显示坐标轴
    plt.show()  # 显示图片框
     
    

      

  • 相关阅读:
    npm包发布过程
    react树状组件
    js数据结构处理--------扁平化数组处理为树结构数据
    js数据结构处理--------树结构数据遍历
    JS fetch
    JS promise
    JS 闭包
    JS 异步回调
    三角形加正方形
    webAPI的分类
  • 原文地址:https://www.cnblogs.com/liutongqing/p/6891429.html
Copyright © 2011-2022 走看看