(一)OpenCV计算机视觉基础———1.图像读取,显示与存储

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()

运行该程序时,未按下键盘键时程序没有新的状态出现,当按下任意一个键之后,两个窗口都会被释放。

  • 21
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值