python opencv读取图像_python-opencv:读取图片

代码

import cv2

# 读取一张图片

src = cv2.imread("../images/lena.jpg")

# 命名一个窗口

cv2.namedWindow("input image", cv2.WINDOW_AUTOSIZE)

# 显示一张图片

cv2.imshow("input image", src)

# 等待键盘按键

cv2.waitKey(0)

# 销毁所有窗口

cv2.destroyAllWindows()

imread 函数

使用函数 cv2.imread() 读入图像。这幅图像应该在此程序的工作路径,或者给函数提供完整路径,作为第一个参数

第二个参数是要告诉函数应该如何读取这幅图片:

cv2.IMREAD_COLOR:读入一副彩色图像。图像的透明度会被忽略,这是默认参数

cv2.IMREAD_GRAYSCALE:以灰度模式读入图像

cv2.IMREAD_UNCHANGED:读入一幅图像,并且包括图像的 alpha 通道

注意:就算图像的路径是错的, OpenCV 也不会提醒你的,但是当你使用命令print img时得到的结果是None。

显示图片

使用函数 cv2.imshow() 显示图像。窗口会自动调整为图像大小。

第一个参数是窗口的名字,其次才是我们的图像。

你可以创建多个窗口,只要你喜欢,但是必须给他们不同的名字

waitKey

cv2.waitKey() 是一个键盘绑定函数。需要指出的是它的时间尺度是毫秒级。

函数等待特定的几毫秒,看是否有键盘输入。

特定的几毫秒之内,如果按下任意键,这个函数会返回按键的 ASCII 码值,程序将会继续运行。

如果没有键盘输入,返回值为 -1,如果我们设置这个函数的参数为 0,那它将会无限期的等待键盘输入。

它也可以被用来检测特定键是否被按下,例如按键 a 是否被按下

警告:如果你用的是 64 位系统,你需要将 k = cv2.waitKey(0) 这行改成 k = cv2.waitKey(0) & 0xFF。

销毁窗口

cv2.destroyAllWindows() 可以轻易删除任何我们建立的窗口。

如果你想删除特定的窗口可以使用 cv2.destroyWindow(),在括号内输入你想删除的窗口名

一种特殊的情况是,你也可以先创建一个窗口,之后再加载图像。这种情况下,你可以决定窗口是否可以调整大小。使用到的函数是 cv2.namedWindow()。初始设定函数标签是 cv2.WINDOW_AUTOSIZE。但是如果你把标签改成cv2.WINDOW_NORMAL, 你就可以调整窗口大小了。当图像维度太大,或者要添加轨迹条时,调整窗口大小将会很有用

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 模式。

但是 Matplotib 是 RGB模式。所以彩色图像如果已经被 OpenCV 读取,那它将不会被 Matplotib 正确显示。

你可能感兴趣的:(python,opencv读取图像)