【转载】OpenCV-Python系列之图像处理入门(五)

之前我们已经讲过了OpenCV在各个平台上安装的方法了,从今天开始,正式进入实战部分。首先我们需要做的就是如何读取图像并显示出来,这是图像处理的最基本的部分。

首先我们来了解几个函数

cv2.imread():

我们看一下函数的原型:

retval=cv.imread(filename[, flags])

retval为自定义名称,filename指代需要加载的文件名,一般情况下,大多数时候,我们是直接加载文件的,所以大多时候我们直接读入图像就可以,但是在一些时候,我们想直接将原图转化为灰度图,从而方便后期的形态学处理操作,那么这个时候第二个参数的意义就表现出来了,第二个参数属于一个标志,它用于指定读取图像的方式。总共有三种方式:

cv.IMREAD_COLOR:加载彩色图像。图像的任何透明度都将被忽略。这是默认标志。

cv.IMREAD_GRAYSCALE:以灰度模式加载图像

cv.IMREAD_UNCHANGED:加载图像,包括alpha通道

当然了,为了方便起见,它们也可以分别用1,0,-1进行表示。1指代原图也就是第一个函数;0指代第二个函数代表转为灰度图;-1则为第三个函数。

cv2.imshow():

该函数用于在窗口中显示图像,窗口自动适合当前输入的图像尺寸,该函数与imread函数是相辅相成的,该函数原型为:

None=cv.imshow(winname, mat)

None为不需要填写,不用管它,我们直接用imshow就可以,winname是指你输出的图像的名称,可以自定义,但不要用中文名称,否则会乱码;mat则为你需要显示的图像。

此函数之后应是**cv2.waitKey()**函数,该函数显示指定毫秒的图像。如果不使用waitkey函数,它将不会显示图像。例如,waitKey(0)将无限期显示窗口,直到任何按键为止(适用于图像显示)。 waitKey(25)将显示25毫秒的帧,此后将自动关闭显示。

另一个函数**cv2.destroyAllWindows()**会销毁我们创建的所有窗口。 如果要销毁任何特定的窗口,请使用函数 cv.destroyWindow()在其中传递确切的窗口名称作为参数。

我们现在来做一个实验,先显示最基本的图像(代码图中都有):

在这里插入图片描述

现在我们改变读入的图像为灰度,mread函数的最后一个参数可以进行相关方面的操作,当为0时:

在这里插入图片描述

当为1时:
在这里插入图片描述

若为-1时:
在这里插入图片描述

现在输出的图像的窗口大小是固定的,那么加入我们想要调整窗口的大小,那就需要使用另一个函数,在特殊情况下,我们可以创建一个空窗口,然后再将图像加载到该窗口。在这种情况下,可以指定窗口是否可调整大小。这是通过功能cv.namedWindow()完成的,现在我们实验一下:
在这里插入图片描述

当我们在函数后加一个0,则可以用鼠标手动调整输出图像的大小,这将非常方便。事实上,0对应的参数为cv2.WINDOW_NORMAL,即为自动调整图像,我们大致了解一下相关的参数:

WINDOW_NORMAL或WINDOW_AUTOSIZE: WINDOW_NORMAL可以调整窗口大小,而WINDOW_AUTOSIZE会自动调整窗口大小以适合显示的图像(请参见imshow),并且不能手动更改窗口大小。

WINDOW_FREERATIO或WINDOW_KEEPRATIO: WINDOW_FREERATIO调整图像时不考虑其比例,而WINDOW_KEEPRATIO则保持图像比例。

WINDOW_GUI_NORMAL或WINDOW_GUI_EXPANDED: WINDOW_GUI_NORMAL是绘制没有状态栏和工具栏的窗口的旧方法,而WINDOW_GUI_EXPANDED是新的增强型GUI。默认标志== WINDOW_AUTOSIZE | WINDOW_KEEPRATIO | WINDOW_GUI_EXPANDED

假若我们想将处理之后的图像保存起来,保存到文件夹中,那么就需要用到cv2.imwrite函数。

cv2.imwrite():

imwrite函数将图像保存到指定文件。图像格式是根据文件扩展名选择的(扩展名列表请参见cv :: imread)。通常,使用此功能只能保存8位单通道或3通道(具有“ BGR”通道顺序)图像,但以下情况除外:

对于PNG,JPEG 2000和TIFF格式,可以保存16位无符号(CV_16U)图像

可以以PFM,TIFF,OpenEXR和Radiance HDR格式保存32位浮点(CV_32F)图像;使用LogLuv高动态范围编码(每像素4个字节)将保存3通道(CV_32FC3)TIFF图像

使用此功能可以保存带有Alpha通道的PNG图像。为此,创建8位(或16位)4通道图像BGRA,其中alpha通道位于最后。完全透明的像素应将alpha设置为0,完全不透明的像素应将alpha设置为255/65535

该函数原型为:

retval=cv.imwrite(filename, img[, params])

第一个参数是文件名,第二个参数是要保存的图像。现在我们写个综合代码:

	view plaincopy to clipboardprint?
 1. import numpy as np   
 2. import cv2 as cv      
 3. img =cv.imread('cat.jpg', 0)   
 4. cv.imshow('image', img)   
 5. k =cv.waitKey(0) & 0xff   
 6. if k == 27:  # wait for ESC key to exit  
 7.      cv.destroyAllWindows()   
 8. elif k == ord('s'):  # wait for 's' key to save and exit  
 9.     cv.imwrite('cat.png', img)  
 10.    cv.destroyAllWindows()

在上面的程序中,以灰度加载图像,显示图像,按下键盘的“ s”键保存图像并退出,或者按ESC键直接退出而不保存。我们按下s实验:
在这里插入图片描述
图像保存完毕。

那么图像处理的入门部分算是正式结束了,这也是基础中的基础,后续都将非常有用。
查看文章汇总页https://blog.csdn.net/weixin_44237705/article/details/107864965
更多openvino技术信息可以入群交流~
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值