zoukankan      html  css  js  c++  java
  • Opencv-Python 图像

    目标

    在这里你将学会这样读入一副图像,怎么样显示一副图像,以及如何保存一副图像

    你将学习如下函数:cv2.imread(), cv2.imshow(), cv2.imwrite()

    如果你愿意的话,我会教你如何使用Matplotlib显示一副图片

    读入图像

    使用函数cv2.imread()读入图像。

    第一个参数是这幅图像应该在此程序的工作路径,或者给函数提供完整路径

    第二个参数是告诉函数应该如何读取这幅图片

    cv2.IMREAD_COLOR:读入一副彩色图像。图像的透明度也会被忽略,这是默认参数

    cv2.IMREAD_GRAYSCALE:以灰度模式读入图像

    cv2.IMREAD_UNCHANGED:读入一副图像,并且包括图像的alpha通道

    import numpy as np
    import cv2
    
    # cv2.IMREAD_COLOR # 读入一副彩色图像,图像的透明度会被忽略,这是默认参数 -1
    # cv2.IMREAD_GRAYSCALE #以灰度模式读入图像 0
    # cv2.IMREAD_UNCHANGED #读入一副图像,并且包括图像的alpha通道 1
    img = cv2.imread('timg.jpg', 0)

    警告: 就算图片的路径是错误的,Opencv也不会提醒你,但是但你使用命令print(img)的时候得到的结果是None.

    显示图像

    使用函数cv2.imshow()显示图像,窗口会自动调整Wie图像大小,第一个参数是窗口的命令,其次才是我们的图像,你可以创建多个窗口,只要你喜欢,但是必须给他们不同的名字

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

    展示效果:

    cv2.waitKey()是一个键盘绑定函数。需要制定的是它的时间尺度是毫秒级。函数等待特定的几毫秒,看是否有键盘输入。在特定的几毫秒之内,如果按下任意键,这个

    函数会返回按键的ASCII码值,程序将会继续运行。如果没有键盘输入,返回值为-1,如果我们设置的这个函数的参数为0,那它将会无限的等待键盘输入。它也可以被

    用来检测特定键盘是否被按下。它也可以被用来检测特定键是否被按下,例如按键a是否被按下,后面我们可以接着讨论。

    cv2.destoryAllWindows()可以轻易的删除任何我们建立的窗口。如果你想删除特定的窗口可以使用cv2.destoryAllWindow(),在括号内输入你想删除的窗口名。

    建议:一种特殊的情况是,你也可以先创建一个窗口,之后再加载图像。这种情况下,你可以决定窗口是否可以调整大小。使用到的函数是cv2.namedWindow().

    初始设定函数标签是cv2.WINDOW_AUTOSIE.但是如果你把标签改为cv2.WINDOW_NORMAL,你就可以调整窗口大小了。当图像维度太大,或者要添加轨迹条的时候

    调整窗口大小将会很有用。

    代码如下:

    import cv2
    
    img = cv2.imread('timg.jpg', 0)
    cv2.namedWindow('image',cv2.WINDOW_NORMAL)
    cv2.imshow('image', img)
    cv2.waitKey(0)
    cv2.destroyWindow('image')
    # cv2.destroyAllWindows()

    保存图像

    下面的程序将会加载出来一个灰度图,显示图片, 按下's'键后保存后退出,或者是按下ESC键盘退出不保存

    import cv2
    
    img = cv2.imread('timg.jpg', 0)
    cv2.namedWindow('image',cv2.WINDOW_NORMAL)
    cv2.imshow('image', img)
    key = cv2.waitKey() #默认是0,0的话会一直无限等下去; 如果不是0的话,相当于传入等待参数,最多等待多久,毫秒, 例如3000,3秒,如果在3秒内按下键的话,则key就是对应的键ASCII值,否则-1
    if key == ord('s'): #等待按下s键
        cv2.imwrite('test_back.jpg', img) #保存的图片路径,img对象
        cv2.destroyAllWindows()
        print('按下S键')
    elif key == 27: #等待按下ESC键
        cv2.destroyAllWindows()
        print('按下ESC键')
    else:
        print('其他键')
    # cv2.destroyWindow('image')

     警告:如果你用的是64位系统,你需要将key = cv2.waitKey(0)改为key = cv2.waitKey(0)&OxFF

    使用Matplotlib

    Matplotlib是Python的一个绘图库,里面有各种各样的绘图方法,之后会陆续了解到。现在,可以学习怎么样用Matplotlib显示图像,你可以放大图像,保存它等。

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

    显示如下:

  • 相关阅读:
    C# 中ArrayList强制转化为数组【转】
    [转]rdlc和rdl的区别
    用EditPlus打造C#编程环境
    aspnet_wp.exe 未能启动
    手工打造C#IDE环境(一):万事开头难
    不让Hashtable排序
    Javascript实现把网页中table的内容导入到excel中的几种方法
    jQuery UI draggable+droppable+resizable+selectable+sortable
    CodeIgniter整理
    PHP文件 文件夹操作
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/14164941.html
Copyright © 2011-2022 走看看