当前位置:   article > 正文

OpenCV | 图像处理基本操作_key = cv2.waitkey(10) if key == ord('a'):

key = cv2.waitkey(10) if key == ord('a'):

图像处理过程中,读取图像、显示图像、保存图像是最基本的操作。下面将简单介绍这几项基本操作。

1.1读取图像

使用函数cv2.imread()来读取图像,该函数支持各种静态图像格式。

retval = cv2.imread(filename[,flags])
    • retval的值是读取到的图像,若未读取到则返回None
    • filename表示图像的完整文件名
    • flags是读取标记

    flags标记可取值,其中第一列和第三列都可作为标记值

    例1-读取当前目录下名为rhz.png的图像,并保持原有格式读入

    import cv2
    rhz = cv2.imread("rhz.png",-1)
    print(rhz)
    • 1
    • 2

    运行程序后,会输出图像的像素值,如图1-1所示。

    图1-1图像部分像素值

    1.2 显示图像

    OpenCV中有多个与显示有关的函数

    1.namedWindow函数

    函数cv2.namedWindow()用来创建指定名称的窗口

    #Test = cv2.namedWindow("窗口名字")
    
    cv2.namedWindow("窗口1")
    
    • 1
    • 2
    • 3

    2.imshow函数

    函数cv2.imshow()用来显示图像

    Test = cv2.imshow("窗口名字",要显示的图像)
    
    • 1

    例2-创建一个窗口并在其中显示读取的图像

    import cv2
    #读取图像
    test = cv2.imread("rhz.jpg")
    #创建窗口
    cv2.namedWindow("窗口1")
    #显示图像
    cv2.imshow("窗口1",test)
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3.waitKey函数

    函数cv2.waitKey()用来等待按键,当用户按下键盘后,该语句会被执行,并获取返回值。

    #retval表示返回值,若按键未被按下,则返回-1;若按下,则返回按键的ASCII码值
    #delay time表示等待按键触发的时间(ms),当该值为负或者0,表示无限等待,默认值为0,只有事件触发后才执行后续代码
    
    retval = cv2.waitKey([delay time])
    • 1
    • 2
    • 3

    通过将返回值与ASCII码值进行比较,就可以确定是否按下了某个特定的键。

    Python提供了函数ord(),用来获取字符的ASCII码值。

    if cv2.waitKey()==ord('A'):
          #如果按下"A",则响应
    • 1

    例1-3 在一个窗口内显示图像,并针对按键响应不同事件

    import cv2
    test = cv2.imread("rhz.jpg")
    cv2.imshow("xxx",test)
    key = cv2.waitKey()
    if key == ord("A"):
        cv2.imshow("A被按下-新的窗口名A",test)
    elif key == ord("B"):
        cv2.imshow("B被按下-新的窗口名B",test)
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    4.destroyWindow函数

    函数cv2.destroyWindow()用来释放(销毁)指定窗口

    None = cv2.destroyWindow("窗口名字")

      例1-4 按下按键"A“释放窗口

      import cv2
      test = cv2.imread("rhz.jpg")
      cv2.imshow("xxx",test)
      key = cv2.waitKey()
      if key == ord("A"):
          cv2.destroyWindow("xxx")
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6

      运行上述程序,首先会在一个名为XXX的窗口内显示rhz.jpg图像。在程序运行的过程中,当未按下键盘上的按键时,程序没有新的状态出现;当按下键盘上的按键"A"后,窗口XXX会被释放。

      5.destroyAllWindows函数

      函数cv2.destroyAllWindows()用来释放(销毁)所有窗口

      None = cv2.destroyALLWindows()

        例1-5 按下按键A展示第一张图片,按下按键B展示第二张图片,按下按键C,使用函数cv2.destroyAllWindows()释放所有窗口

        import cv2
        test = cv2.imread("rhz.jpg")
        cv2.imshow("xxx0",test)
        while(1):
            key = cv2.waitKey()
            if key == ord("A"):
        
                cv2.imshow("xxx1",test)
            elif key == ord("B"):
                cv2.imshow("xxx2",test)
            elif key == ord("C"):
                cv2.destroyAllWindows()
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11

        1.3 保存图像

        使用函数cv2.imwrite(),用来保存图像

        #函数返回的是布尔值,True表示保存成功,False为失败
        #filename保存的目标文件的完整路径,包含文件扩展名
        #img是保存图像的名字
        #params保存类型参数,可选
        test = cv2.imwrite(filename,img[,params])
        • 1
        • 2
        • 3
        • 4

        例1-6 读取的图像以名称1.png保存到当前目录下

        import cv2
        #读取图像,生成副本图像test
        test = cv2.imread("rhz.jpg")
        #保存图像
        r = cv2.imwrite("1.png",test)
        • 1
        • 2
        • 3
        • 4
        声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/618832
        推荐阅读
        相关标签
          

        闽ICP备14008679号