这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 企业专区 » OpenVINO生态社区 » 【原创】OpenCV-Python系列之图像处理入门(五)

共3条 1/1 1 跳转至

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

高工
2020-06-25 11:28:45     打赏

图像处理入门

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

首先我们来了解几个函数:

cv2.imread():

我们看一下函数的原型:

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

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

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

cv2.imshow():

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

None=cv.imshow(winname, mat)

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

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

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

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


image.png

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

image.png

当为1时:


image.png

若为-1时:

image.png

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

image.png

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

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

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

WINDOW_GUI_NORMALWINDOW_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”通道顺序)图像,但以下情况除外:

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

  • 可以以PFMTIFFOpenEXRRadiance HDR格式保存32位浮点(CV_32F)图像;使用LogLuv高动态范围编码(每像素4个字节)将保存3通道(CV_32FC3TIFF图像

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

该函数原型为:

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

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

import numpy as np
import cv2 as cv

img = cv.imread('cat.jpg', 0)
cv.imshow('image', img)
k = cv.waitKey(0) & 0xff
if k == 27:  # wait for ESC key to exit
    cv.destroyAllWindows()
elif k == ord('s'):  # wait for 's' key to save and exit
    cv.imwrite('cat.png', img)
    cv.destroyAllWindows()

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

image.png

图像保存完毕。

那么图像处理的入门部分算是正式结束了,这也是基础中的基础,后续都将非常有用。









对计算机视觉感兴趣?这个社区推荐给你~

>>点击了解OpenVINO生态开发社区




关键词: 图像处理    

高工
2020-06-25 23:12:19     打赏
2楼

很不错的帖子



工程师
2020-06-25 23:27:42     打赏
3楼

很不错的产品


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]