OpenCv图像读存

1.图像的读与存 

1.1 图像读取

使用【cv.imread(参数1,参数2)】读出图像。

参数1:给出图片的路径,应在工作目录下或者给出绝对路径。

参数2:指定读出图片的方式,有以下3种方式。

  • cv.IMREAD_COLOR: 加载彩色图像,但忽视透明度。默认标志。可用整数1简单代替。
  • cv.IMREAD_GRAYSCALE:以灰度模式加载图像。可用整数0简单代替。
  • cv.IMREAD_UNCHANGED:加载图像,包括alpha通道。可用整数-1简单代替。

警告:即使图像路径错误,imread()也不会引发任何错误。但在后续对其操作时会出现错误。

例:

import cv2 as cv
img = cv.imread('cr7.jpg',-1);

1.2 图像显示

使用【cv.imshow(参数1,参数2)】在窗口中显示之前读取的图像,窗口大小自动适应图像。

参数1:赋予窗口的名称。

参数2:图片对象。

例:

import cv2 as cv

img = cv.imread('cr7.jpg',-1);

cv.imshow('cr7',img)
cv.waitKey(10000)
cv.destroyAllWindows()

需要提的是cv.imshow()应该与cv.waitkey()和cv.destroyAllWindows()一起使用,这里介绍他们。

【cv.waitkey(参数)】

是一个键盘绑定函数。

参数:传递一个数,等待这个数的时间后(单位为ms),程序将继续执行下一步,若是在等待期间发生按键事件则立即结束。若输入的参数为0,则无限等待用户按键发生。

如:例子中传递的参数为10000ms,故等待10s程序继续执行下一步。

特殊用法:等待某一键值进入不同的分支操作

key = cv.waitKey(0)
if key == 27:                       #等待ESC退出
    #操作1
elif key == ord('a'):               #等待关键字
    #操作2

【cv.destroyAllWindows()】

破坏我们创建的所有窗口。

如果要销毁特定的窗口,使用函数【cv.destroyWindow(参数)】,参数为确切的窗口名称。

这时我们还会发现显示的图像是无法拉伸大小的,若要拉伸图像则需要用到cv.namedWindow()。

原理:创建一个空窗口,然后再将图像加载到该窗口。

【cv.namedWindow(参数1,参数2)】

参数1:给定创建窗口的名称。

参数2:

默认情况下,该参数为cv.WINDOW_AUTOSIZE,依旧不可以调整窗口大小。

但是如果将参数设为cv.WINDOW_NORMAL,则可以调整窗口大小。

例:

import cv2 as cv

img = cv.imread('cr7.jpg',-1)

#查看是否读成功
cv.namedWindow('cr7',cv.WINDOW_NORMAL)
cv.imshow('cr7',img)
cv.waitKey(0)
cv.destroyAllWindows()

1.3 图像保存

使用函数【cv.imwrite(参数1,参数2)】保存图像。

参数1:为保存的文件命名,注意:需带上保存的格式,如.png或.jpg等。

参数2:要保存的图像。

例:

import cv2 as cv

img = cv.imread('cr7.jpg',-1)

#查看图片
cv.namedWindow('cr7',cv.WINDOW_NORMAL)
cv.imshow('cr7',img)

#选择直接退出或保存图片再退出
key = cv.waitKey(0)
if key == 27:                       #等待ESC退出
    cv.destroyAllWindows()
elif key == ord('s'):               #等待关键字,保存和退出
    cv.imwrite('saveCR7.jpg',img)
    cv.destroyAllWindows()

猜你喜欢

转载自blog.csdn.net/Cristiano2000/article/details/118462985
今日推荐