zoukankan      html  css  js  c++  java
  • openCV(一) 读取保存图像


    1、读入图像: cv2.imread(相对/绝对路径,读取标记);
    返回值是 Mat 类型,即返回读取的图像,读取失败返回一个空的矩阵对象(Mat::data==NULL)
    参数有2:1为读取的图片文件名,使用相对/绝对路径;2为一个读取标记,用于选择读取图片的方式,默认是IMREAD_COLOR
    - cv2.IMREAD_COLOR:读入一幅彩色图像,BGR模式,图像的透明度被忽略,这是默认参数;
    - cv2.IMREAD_GRAYSCALE:以灰度模式读入图像;
    - cv2.IMREAD_UNCHANGED:读入一幅图像,并且包括图像的alpha通道;
     Tips:
                ·当图像的路径错误,openCV不会提醒,只是输出结果为None
                ·第二个参数告诉函数应该如何读取这幅图片

    2、显示图像:cv2.imshow(窗口名字,图像)
    窗口会自动调整图像大小,第一个参数是窗口的名字,第二个是图像,可以创建多个窗口,多个名字。

    - cv2.waitKey()是一个键盘绑定函数,他的时间尺度是毫秒,函数等待特定的几毫秒,看是否有键盘输入。
    ·特定时间内,按任意键函数返回按键的ASCII码,程序继续运行。
    ·没有按键,返回 -1;
    ·设置函数的参数为0,则会无限等待键盘输入;
    可以用于判断特定键是否被按下。

    -cv2.destroyAllWindows():删除窗口;
    -cv2.destroyWindows(窗口名):删除特定的窗口
     Tips:
            特殊情况是,先创建一个窗口,再加载图像。这时可以决定窗口是否可以调整大小。使用函数cv2.namedWindow();
            初始设定函数标签是:cv2.WINDOW_AUTOSIZE,但是若你把标签改成cv2.WINDOW_NORMAL,你就可以调整窗口大小,
            图像维度太大或要添加轨迹条时,调增窗口大小会很有用。
    

      

    3、保存图像: cv2.imwrite(文件名,要保存的图像)
    1 import numpy as np
    2 import cv2
    3 cv2.namedWindow('image',cv2.WINDOW_NORMAL)
    4 img=cv2.imread('0.png',0)
    5 cv2.imshow('image',img)
    6 cv2.waitKey(0)
    7 # cv2.imwrite('a.png',img)
    8 cv2.destroyAllWindows()


    练习:加载一个灰度图,显示图片,按下s保存后退出,按下ESC键退出不保存
     1 import numpy as np
     2 import cv2
     3 img=cv2.imread('0.png',0)   # 读取图像
     4 cv2.imshow('image',img)     # 新建 image 窗口
     5 k=cv2.waitKey(0)&0xFF       # 64位系统需要将其加上0xFF
     6 if k==ord('s'):        # ord()函数用于返回对应字符的ascii码,chr()用于表示ascii码对应字符他的输入是数字,可以是十进制也可以是十六进制
    7 cv2.imwrite('a.png',img)
    8
    cv2.destroyAllWindows()
    9
    elif k==27: 10 cv2.destroyAllWindows()

    练习:用于生成随机验证码
     1 import random
     2 # 1X3Y3ZX
     3 def make_code(size=7):
     4     res = ''
     5     for i in range(size):
     6         # 循环一次则得到一个随机字符(字母/数字)
     7         s = chr(random.randint(65, 90))
     8         num = str(random.randint(0, 9))
     9         res += random.choice([s, num])
    10     return res
    11 res=make_code()
    12 print(res)

    使用matplotlib显示图像
    1 # 彩色图像使用openCV加载时是BG模式,但是matplotlib是RGB模式,所以彩色图像若已经被openCV读取,将不会被Matplotlib正确显示。
    2 import numpy as np
    3 import cv2
    4 from matplotlib import pyplot as plt
    5 img=cv2.imread('0.png',0)
    6 plt.imshow(img,cmap='gray',interpolation='bicubic')
    7 plt.xticks([]),plt.yticks([])
    8 plt.show()
  • 相关阅读:
    commands.getstatusoutput和subprocess.call结果不一致
    win10 企业版 2015 长期服务激活
    pycharm设置护眼模式
    实战--滚动菜单
    javascript中this的用法
    jQuery之remove与empty的区别
    clone方法案例实践
    jQuery内部插入与外部插入
    jQuery文档处理
    2020/02/11星期二复习
  • 原文地址:https://www.cnblogs.com/Free-Ink/p/12836165.html
Copyright © 2011-2022 走看看