OpenCV入门

作者: 逍遥_yjz | 来源:发表于2021-09-07 08:27 被阅读0次

图像处理的基本操作
  在图像处理的过程中,读取图像、显示图像和保存图像是最基本的操作

1. 读取图像

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

  1. -retavl:返回值,其值是读取到的图像。如果未读取到图像,则返回None
  2. -filename:表示要读取的图像的完整路径
  3. -flags:读取标记。该标记用来控制读取文件的类型,具体如下表所示(表中第一列和三列是等价的):
含义 数值
cv2.IMREAD_UNCHANGED 保持原格式不变 -1
cv.IMREAD_GRAYSCALE 将图像调整为单通道的灰度图像 0
cv2.IMREAD_COLOR 将图像调整为3通道的BGR图像。该值是默认值 1
cv2.IMREAD_ANYDEPHT 当载入的图像深度是16位或者32位时,就返回其对应深度的图像;否则将其转换为8位图像 2
cv.IMREAD_ANYCOLOR 以任何可能的颜色格式读取图像 4
cv2.IMREAD_LOAD_GDAL 使用gdal驱动程序加载图像 8

2. 显示图像

2.1. namewindow函数

函数cv2.namewindow函数用来创建指定名称的窗口,其语法格式为

None=cv.namewindow(winna)

-winna是要创建的窗口的名称

2.2. imshow函数

函数cv.imshow()用来显示图像,其语法格式为:

None = cv.imshow(winna, mat)

  1. -winna是窗口名称
  2. -mat是要显示的图像

2.3waitKey函数
函数cv2.waitKey函数用来等待按键,当用户按下按键后,该语句会被执行,并获取返回值。其语法格式为:

retval = cv2.waitKey( [delay])

  1. -retval表示返回值。如果没有按键被按下,则返回-1;如果有按键被按下,则返回该按键的ASDII值
  2. -delay表示等待按键触发的事件,单位是ms。当该值是负数或者零时,表示无限等待。该值默认为0

在实际应用中,可以通过函数cv2.waitKey()获取按下的按键,并针对不同的键作出不同的反应,从而实现交互功能。
  有关cv2.waitKey()函数的另外角度的理解,该函数能够让程序实现暂停功能。当程序运行到该语句时,会按照参数delay的设定等待特定的时长。delay值的不同会有不同的结果:一、如果参数delay为0或者负数,则程序会一直等待。知道有按键的事件发生时,才会执行后续程序;二、如果参数delay的值为一个正数,则在这段时间内,程序等待按下键盘按键。当有按下键盘按键的事件发生时,就会执行后续程序语句,如果在delay参数所指定的时间内一直没有这样的事件发生,则超过等待时间后,继续执行后续的程序语句

2.4 destroyWindow函数

函数cv2.destroyWindow()用来释放指定窗口,其语法格式为:

None = cv.destroyWindow(winna)

  • -winna:窗口名称

2.5 destroyAllWindow函数

函数cv2.destroyAllWindow()用来释放所有窗口,其语法格式为:

None = cv.destroyAllWindow()

3. 保存图像

OpenCV提供了函数cv2.imwrite(),用来保存图像,该函数的语法格式为:

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

  1. -retval:返回值。如果保存成功,则返回True;如果保存不成功,则返回False
  2. -filename:要保存的目标文件的完整路径名,包含文件扩展名
  3. -img:被保存图像的名称
  4. -params:保存类型参数,是可选的

程序实现上述功能:

import cv2
#读取图像
img_bgr = cv2.imread("lenacolor.png")
#读取图像并将其调整为单通道的灰度图像
img_gray = cv2.imread("lenacolor.png", 0)
#创建窗口
cv2.namedWindow("BGR")
cv2.imshow("BGR", img_bgr)
#imshow可以引用一个不存在的窗口
cv2.imshow("GRAY", img_gray)
k = cv2.waitKey()
if k == ord("A"):
    #保存图像
    cv2.imwrite("a.png", img_gray)
cv2.destroyAllWindows()
程序运行结果

相关文章

网友评论

    本文标题:OpenCV入门

    本文链接:https://www.haomeiwen.com/subject/mcqywltx.html