python3 openCV/PIL/matplotlib的简单使用

# 查找资料,结合实例代码,至少比较三种Python图形处理库或图像处理库的异同点
"""
1.openCV,底层由c/c++构成,运行速度较快
2.PIL(Python Image Library),
3.matplotlib,Matplotlib 是 Python 的绘图库。它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案

"""
# open CV的简单使用
def test_openCV():
    """
    轻量且高效,由一系列C函数和少量C++类构成,
    同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法
    可实现计算机图像、视频编辑
    广泛应用于图像识别、运动跟踪、机器视觉等领域
    """
    # 引入
    import cv2
    # 图像的读写操作
    image1 = cv2.imread('peiqi.png')
    # 灰度模式打开
    image2 = cv2.imread('peiqi.png',0)
    # 显示图片
    cv2.imshow('image', image1)#第一个为显示的图片名字,第二个为图片
    cv2.waitKey(0) #当值为0时刷新时间间隔为0
    cv2.imshow('image', image2)#第一个为显示的图片名字,第二个为图片
    cv2.waitKey(0)
    # 保存图片,此次保存灰度模式的佩奇
    cv2.imwrite('huidupeiqi.png',image2)#第一个参数为文件名,第二个为要保存的图像。

    pass

# PIL 的简单使用
def test_PIL():
    """
    PIL的三大功能
    1.图像归档(Image Archives)。
    PIL非常适合于图像归档以及图像的批处理任务。你可以使用PIL创建缩略图,转换图像格式,打印图像等等。
    2.图像展示(Image Display)。
    PIL较新的版本支持包括Tk PhotoImage,BitmapImage还有Windows DIB等接口。PIL支持众多的GUI框架接口,可以用于图像展示。
    3.图像处理(Image Processing)。
    PIL包括了基础的图像处理函数,包括对点的处理,使用众多的卷积核(convolution kernels)做过滤(filter),还有颜色空间的转换。
    PIL库同样支持图像的大小转换,图像旋转,以及任意的仿射变换。
    PIL还有一些直方图的方法,允许你展示图像的一些统计特性。这个可以用来实现图像的自动对比度增强,还有全局的统计分析等。
    """
    # 引入
    # import PIL
    from PIL import Image
    # 图像的读写操作
    image1 = Image.open("peiqi1.png","r")
    print(image1)
    print(image1.size,image1.mode)
    # 保存图像
    # image1.save("peiqi1.png",'png')
    # 创建指定大小的缩略图,50*50
    image1.thumbnail((50,50),resample=Image.BICUBIC)
    # image1.show()
    image1.save("littlepeiqi.png",'png')
    # 图像裁剪,
    # 左上角x,y坐标,右下角的x,y坐标,规定图像的最左上角的坐标为原点(0,0),宽度的方向为x轴,高度的方向为y轴,
    # 每一个像素代表一个坐标单位
    box = (10,10,20,20)
    region = image1.crop(box)
    region.show()
    region.save("boxpeiqi.png", 'png')
    pass

# scikit——image的简单使用
def test_matplotlib():
    # 引入
    import matplotlib.pyplot as plt
    import numpy as np
    # 绘画简单的图形
    # 从[-1,1]中等距去50个数作为x的取值
    x = np.linspace(-1, 1, 50) #前两个为x的取值范围,后一个为取值个数,等距取值

    # 设置函数样式
    y1 = 2 * x + 1
    y2 = 2 ** x + 1
    # 第一个是横坐标的值x,第二个是纵坐标的值y
    plt.plot(x, y1)
    plt.plot(x, y2)
    """
    还可以设置多个线...
    """

    # 设置label标签/名称,带汉字会警告
    plt.xlabel("x")
    plt.ylabel("y")

    # 必要方法,用于将设置好的figure对象显示出来
    plt.show()
    pass

if __name__ == '__main__':

    # 测试openCV
    # test_openCV()
    # test_PIL()
    test_matplotlib()
    pass
原文地址:https://www.cnblogs.com/msdog/p/13060543.html