openCV(一) 读取保存图像

时间:2020-05-06
本文章向大家介绍openCV(一) 读取保存图像,主要包括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()

原文地址:https://www.cnblogs.com/Free-Ink/p/12836165.html