Opencv图片处理

目标

  • 在这里,您将学习如何读取图像、如何显示图像以及如何将其保存回原处。
  • 您将学习以下功能:cv2.imread()cv2.imshow() , cv2.imwrite()
  • 或者,您将学习如何使用Matplotlib显示图像。

使用OpenCV 

读图像

使用函数cv2.imread()读取图像。图像应该在工作目录中,或者给出完整的图像路径。

第二个参数是一个标志,它指定应该读取图像的方式。

  • cv2.IMREAD_COLOR:加载一个彩色图像。任何图像的透明度都会被忽略。这是默认标志。
  • cv2.IMREAD_GREYSCALE:在灰度模式下加载图像
  • cv2.IMREAD_INTENT:加载图像本身,包括alpha通道

注:与这三个标志不同,您可以分别传递整数1、0或-1。

import numpy as np
import cv2

# Load an color image in grayscale
img = cv2.imread('messi5.jpg',0)

显示图像

使用函数cv2.imshow()若要在窗口中显示图像,请执行以下操作。该窗口自动符合图像大小。

第一个参数是一个窗口名称,它是一个字符串。第二个参数是我们的图像。您可以创建任意数量的窗口,但使用不同的窗口名称。

cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

cv2.waitKey()是键盘绑定函数。它的参数是以毫秒为单位的时间。该函数等待任何键盘事件的指定毫秒。如果您在这段时间内按下任何键,程序将继续进行。如果0被传递时,它将无限期地等待一个关键的笔划。

cv2.destoryAllWindows()只需摧毁我们创建的所有窗口。如果要销毁任何特定窗口,请使用该函数cv2.destoryWindow()将确切的窗口名称作为参数传递。

注:有一种特殊情况,您已经可以创建一个窗口并在以后将图像加载到它。在这种情况下,您可以指定窗口是否可以调整大小。它是用这个函数来完成的。cv2.namedWindow()。默认情况下,标志是cv2.WINDOW_AUTOSIZE。但是如果您指定标志为cv2.WINDOW_NORMAL,您可以调整窗口的大小。当图像尺寸太大,并在窗口中添加跟踪条时,这将是很有帮助的。

见以下代码:

cv2.namedWindow('image', cv2.WINDOW_NORMAL)
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

写图像

使用函数cv2.imwrite()保存图像。

第一个参数是文件名,第二个参数是要保存的图像。

cv2.imwrite('messigray.png',img)

综合:

下面的程序以灰度加载图像,显示图像,如果按“s”并退出,则保存图像,或者如果按下“退出”,则直接退出而不保存。

import numpy as np
import cv2

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

使用Matplotlib

Matplotlib是Python的绘图库,它为您提供了各种各样的绘图方法。在这里,您将学习如何使用Matplotlib显示图像。您可以缩放图像,保存它等使用Matplotlib。

import numpy as np
import cv2
from matplotlib import pyplot as plt

img = cv2.imread('messi5.jpg',0)
plt.imshow(img, cmap = 'gray', interpolation = 'bicubic')
plt.xticks([]), plt.yticks([])  # to hide tick values on X and Y axis
plt.show()

窗口的屏幕截图如下:

注意:OpenCV加载的彩色图像处于BGR模式。但是Matplotlib以RGB模式显示。因此,如果使用OpenCV读取图像,则在Matplotlib中将无法正确显示彩色图像。

猜你喜欢

转载自blog.csdn.net/rongpeisheng666/article/details/81606427