openCV 读取保存图像
Posted free-ink
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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()
以上是关于openCV 读取保存图像的主要内容,如果未能解决你的问题,请参考以下文章