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()  # 显示图片框
     
    

      

  • 相关阅读:
    什么叫类属性 实例属性 以及区别
    移动端奇葩的多行文字省略隐藏
    CSS-三角形及其原理
    HTML5:在移动端禁用长按选中文本功能
    ffmpeg对mp4文件进行ts切片并生成m3u8文件
    mysql 查询时间戳格式化
    idea连接mysql报错Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' property
    yii gii 访问不了
    mysql 添加用户 多主机 授权 连接
    js div scrollTop active 垂直居中显示
  • 原文地址:https://www.cnblogs.com/liutongqing/p/6891429.html
Copyright © 2011-2022 走看看