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

 

posted on 2023-05-09 22:02  夜的第七章i  阅读(4)  评论(0编辑  收藏  举报