美文网首页OpenCV
OpenCV-Python教程:2.Images

OpenCV-Python教程:2.Images

作者: xxxss | 来源:发表于2017-06-15 14:11 被阅读494次

    ·打开图片,显示,保存图片
    ·这些函数:cv2.imread(), cv2.imshow(), cv2.imwrite()
    ·如何用Matplotlib显示图片

    使用OpenCV

    读入图片

    使用函数cv2.imread()来打开图片,图片要么在当前工作目录,要么是全路径。

    第二个参数是一个标志位,用来指定打开的方式。

    ·cv2.IMREAD_COLOR:加载一个彩色图片。图片的透明度会被忽略,这个是默认标志
    ·cv2.IMREAD_GRAYSCALE:用灰度模式加载图片
    ·cv2.IMREAD_UNCHANGED:包含alpha通道的方式加载图片

    除了这三种标志外,也可以传对应的整数参数1,0,或者-1

    import numpy as np
    import cv2

    # Load an color image in grayscale
    img = cv2.imread('messi5.jpg', 0)

    警告:
    即便图片路径是错的,也不会报错,但是print img会给你None

    显示图片

    使用函数cv2.imshow() 来在窗口里显示图片,窗口自动适配图片大小。

    第一个参数是窗口名称,是字符串。第二个参数是我们的图片,你想创建多少窗口都可以,但是得给不同的窗口不同的名字。

    cv2.imshow('image', img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

    cv2.waitKey()是一个键盘绑定函数。它的参数是毫秒数,这个函数会等待任意键盘事件指定的毫秒时间。如果你点了任意键,这个程序继续。如果传入0,它会一直等待按键。它也可以设置成检测指定键,比如如果a被按了,后面我们会讲

    cv2.destroyAllWindows()销毁所有的我们创建的窗口,如果你想销毁指定的窗口,使用函数cv2.destroyWindow()你可以传指定窗口的名字作为参数。

    注意:

    有种特殊情况你可以先创建窗口,再把图片加载到里面。在这种情况下,你可以指定窗口是否可以改变大小。这是通过函数cv2.namedWindow()完成的。默认情况下,标志位是cv2.WINDOW_AUTOSIZE。但是如果你指定标志位为cv2.WINDOW_NORMAL,你可以改变窗口大小。她可以在图片太大的时候在窗口上加上滚动条。

    看下面的代码:

    cv2.namedWindow('image',cv2.WINDOW_NORMAL)
    cv2.imshow('image',img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

    写入一个图片

    使用函数cv2.imwrite()来写入图片。

    第一个参数是文件名,第二个参数是你要保存的图片。

    cv2.imwrite('messigray.png', img)

    这会在工作目录存一个png格式的图片

    合起来

    下面的程序会按灰度方式加载图片,显示,如果你敲了's'就会保存图片并退出,或者你如果敲了ESC键就会不保存直接退出

    import numpy as np
    import cv2

    img = cv2.imread('messi5.jpg', 0)
    cv2.imshow('image',img)
    k = cv2.waitKey(0)
    if k == 27:                 # wait for ESC key to exit
        cv2.destroyAllWindows()
    elif k == ord('s'):        # wait for 's' key to save and exit
        cv2.imwrite('messigray.png', img)
        cv2.destroyAllWindows()

    警告:
    如果你使用64位的机器,你需要把k = cv2.waitKey(0) 这行换成:

    k = cv2.waitKey(0) & 0xFF

    使用Matplotlib

    Matplotlib是一个Python的绘图库,提供了多种多样的绘图方法。这里是用Matplotlib来显示图片。你可以缩放图片保存等。

    import numpy as np
    import cv2
    from matplotlib import pyplot as plt
    img = cv2.imread('messi5.jpg', 0)
    plt.imshow(img, cmap='gray', interpolation='bicubic')
    plt.xticks([]), plt.yticks([])    # to hide tick values on X and Y axis
    plt.show()

    Matplotlib还有更多的绘图选项。

    警告:

    OpenCV加载的彩色图片是BGR模式的。但是Matplotlib显示的是RGB模式的。所以彩色图片如果是通过OpenCV读入的在Matplotlib里会显示不正确。

    相关文章

      网友评论

        本文标题:OpenCV-Python教程:2.Images

        本文链接:https://www.haomeiwen.com/subject/abnzdttx.html