图像处理入门

1.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则为第三个函数。

2.cv2.imshow():

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

None=cv.imshow(winname, mat)

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

3.cv2.waitKey():

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

4.cv2.destroyAllWindows()

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

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

image.png

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

image.png

当为1时:

image.png

若为-1时:

image.png

5.cv2.namedWindow

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

image.png

当我们在函数后加一个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

6.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])
第一个参数是文件名,第二个参数是要保存的图像。现在我们写个综合代码:
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

原文地址:https://www.cnblogs.com/wuyuan2011woaini/p/15636950.html