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()
  • 相关阅读:
    Educational Codeforces Round 88 (Rated for Div. 2) D. Yet Another Yet Another Task(枚举/最大连续子序列)
    Educational Codeforces Round 88 (Rated for Div. 2) A. Berland Poker(数学)
    Educational Codeforces Round 88 (Rated for Div. 2) E. Modular Stability(数论)
    Educational Codeforces Round 88 (Rated for Div. 2) C. Mixing Water(数学/二分)
    Codeforces Round #644 (Div. 3)
    Educational Codeforces Round 76 (Rated for Div. 2)
    Educational Codeforces Round 77 (Rated for Div. 2)
    Educational Codeforces Round 87 (Rated for Div. 2)
    AtCoder Beginner Contest 168
    Codeforces Round #643 (Div. 2)
  • 原文地址:https://www.cnblogs.com/Free-Ink/p/12836165.html
Copyright © 2011-2022 走看看