zoukankan      html  css  js  c++  java
  • 【opencv系列02】OpenCV4.X图像读取与显示

    一、读取图片

    opencv中采用imread() 函数读取图像

    imread(filename, flags=None)
        filename 图片的路径
        flags 图像读取方式

    • cv2.IMREAD_COLOR : 加载彩色图像, 图像的任何透明度都将被忽略(默认)。
    • cv2.IMREAD_GRAYSCALE : 以灰度模式加载图像。
    • cv2.IMREAD_UNCHANGED : 加载包含Alpha通道的图像。
      也可以使用1, 0 or -1代替,源码中,IMREAD_COLOR = 1,IMREAD_GRAYSCALE = 0,IMREAD_UNCHANGED = -1。

    NOTE

    1. 图像数据以B,G,R的顺序存储。
    2. 读取的图像像素值范围:【0,255】。
    3. 图片路径错误时,程序不报错,返回值为None,显示操作时会报:error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'。
    4. 图片路径中不能包含中文,否则报同2一样的错误。

    代码

    import cv2
    img = cv2.imread('test.jpg',1)
    

    二、显示图片

    使用imshow()函数进行图像显示。
    imshow(winname, mat)
        winname 显示窗口的名字
        mat 要显示的图像数据
    这里需要使用一些辅助函数,首先,在显示图像前和显示后,需要创建和销毁窗口,分别使用函数namedWindow()destroyAllWindows()
    namedWindow(winname, flags=None)
        winname显示窗口的名字
        flags显示窗口的标志

    • cv2.WINDOW_AUTOSIZE : 根据显示图像自动调整窗口,不能手动更改窗口大小(默认) 。
    • cv2.WINDOW_NORMAL : 可以调整窗口大小。

    destroyAllWindows() 销毁创建的所有窗口。

    其次,需要使用一个等待键盘输入的函数waitKey()以保证窗口处于显示状态,否则窗口会一闪而过。
    waitKey(delay=None)
        delay以毫秒为单位延迟, 0是指“永远”的特殊值。

    NOTE

    1. 显示失败,可通过print(mat)判断显示的图像数据是否为None。
    2. 窗口名winname相同时,窗口只会显示最新新图像。

    代码

    cv2.namedWindow('image', cv2.WINDOW_NORMAL) # 可省略
    cv2.imshow("image",img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    三、保存图片

    图片保存通过imwrite()函数完成。
    imwrite(filename, img, params=None)
        filename 保存的图像名称
        img 保存的图像数据
        params 对于JPEG,其表示的是图像的质量,用0 - 100的整数表示,默认95;对于png ,第 三个参数表示的是压缩级别。默认为3。

    代码

    cv2.imwrite('test.jpg', img)
    

    四、应用

    1. 显示保存图片

    加载一幅灰度图像,显示它,如果按's'则保存图像并退出,如果按ESC键直接退出。

    代码

    import cv2
    
    img = cv2.imread('landscape.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('gray.png', img)
        cv2.destroyAllWindows()
    

    2. 使用Matplotlib

    Matplotlib是python的一个绘图库,提供了大量的图形绘制API。下面,通过Matplotlib展示opencv读取的图像、放大图像和保存图像。

    代码

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

  • 相关阅读:
    Google Map API使用详解(一)——Google Map开发背景知识
    IOS开发中发送Email的两种方法
    iOS简单的画线(UIImageVIew方式)
    NSData + Base64
    (转载)谈Flash的破解与加密(附flash破解工具)
    Google Map API使用详解(二)——Google Map API中文说明
    oracle sysdate 等 时间的相关应用
    vc mail 封装类
    switch if 比较
    http://tech.ddvip.com/200810/122362552676322.html state模式~
  • 原文地址:https://www.cnblogs.com/fahaihappy/p/12541560.html
Copyright © 2011-2022 走看看