1.读取图像
OpenCV提供了函数cv2.imread()来读取图像,该函数支持各种静态图像格式
该函数的语法格式为
retval = cv2.imrad(filename,[,flags])
retval 是返回值,其值是读取到的图像,如果未读取到图像,则返回“None”
filename 表示要读取的图像的完整文件名
flags 是读取标记,该标记用来控制读取文件的类型
flags读取标记例如:
第一列参数与第三列数值是相等的
在设置参数时,既可以用第一列的参数值,也开源采用第三列的数值:
cv2.IMREAD_UNCHANGED = -1
另外函数 cv2.imread()能够读取多种不同类型的图像,常见的包括PNG,JPEG格式图片,具体见下图:
想要读取当前目录下名为lena. bmp的图像,并保持按照原有格式读入,则使用的语句为:
lena = cv2.imread("lena.bmp'',-1)
需要注意的是,上面的语句想要正常运行,首先需要导入cv2模块
大多数常用的OpenCV函数都在cv2模块内,与cv2模块对应的cv模块是一个代表传统版本的模块。
但是cv2模块并不代表该模块是专门针对OpenCV2版本,而是指该模块引入了一个改善的API接口
cv2模块内部采用了面向对象的编程方式,而在cv模块内更多采用的是面向过程的编程方式。
现在图像处理邻域大多数情况下都是使用cv2。
2.显示图像
OpenCV提供了多个与显示有关的函数,下面对常用的几个进行简单介绍。
1.namedWindow函数
函数cv2.namedWindow()用来创建指定名称的窗口,其语法格式为:
None = cv2.namedWindow(winname)
winname 是要创建窗口名称。
2.imshow函数
函数cv2.imshow()用来显示图像,其语法格式为:
None = cv2.imshow(winname,mat)
winname 是窗口名称,mat是要显示的图像
在实际使用中,可以先通过函数cv2.namedWindow()来创建一个窗口,再让函数cv2.imshow()引用该窗口来显示图像
也可以不创建窗口,直接使用函数cv2.imshow()引用一个并不存在的窗口,并在其中指定图像,这样函数cv2.imshow()实际上会完成如下两步操作:
第一步:函数cv2.imshow()创建一个指定名称的窗口。
第二步:函数cv2.imshow()将图像显示在刚创建的窗口内。
例如,在下面的语句中,函数cv2,imshow()完成了创建demo窗口和显示image图像的操作。
import cv2
lena = cv2.imshow("lena.bmp")
cv。imshow("demo",lena)
3.存储图像
1.waitKey函数
该函数用来等待按键,当用户按下按键后,该语句会被执行,并获取返回值
retval = cv2.waitKey([delay])
retval 表示返回值,如果没有按键被按下,则返回-1;如果有按键被按下,返回该按键的ASCII码
delay 表示等待键盘触发的时间,单位是ms,当该值是负数或者零时,表示无限等待。该默认值为0
在实际使用中,可以通过函数cv2.waitKey()获取按下的按键,并针对不同的键做出不同的反应,从而实现交互功能。
例如,如果按下A键,则关闭窗口;如果按下B键,则生成一个窗口副本。
2.destroyWindow函数
函数cv2.destroyWindow()用来释放(销毁)指定窗口,其语法格式为:
None = cv2.destroyWindow(winname)
其中:winname是窗口的名称
在实际使用中,该函数通常与函数cv2.waitKey()组合使用实现窗口的释放
例如下面代码所示:
import cv2
lena = cv2.imread("lena.bmp")
cv2.imshow("demo",lena)
cv2.waitKey()
cv2.destroyWindow("demo")
运行这个窗口时,没有按下键盘键时,程序没有新的状态出现,在按下任意键时窗口关闭
3.destroyAIIWindow函数
函数cv2.destoryAIIWindow函数用来释放(销毁)所有窗口,其语法格式为:
None = cv2.destoryAIIWindow(winname)
例如下面代码所示:
import cv2
lena = cv2.imshow("lena.bmp")
cv2.imshow("demo1",lena)
cv2.imshow("demo2",lena)
cv2.waitKey()
cv2.destoryAllwindow()
运行该程序时,未按下键盘键时程序没有新的状态出现,当按下任意一个键之后,两个窗口都会被释放。