1.1 图像入门
原作者:Ana Huamán
翻译及校对:cvtutorials.com
目标
在本教程中,你将学习:
- • 从文件中读取图像。
- • 在OpenCV窗口中显示一个图像
- • 将图像写入文件。
源代码
代码语言:javascript复制import cv2 as cv
import sys
img = cv.imread(cv.samples.findFile("starry_night.jpg"))
if img is None:
sys.exit("Could not read the image.")
cv.imshow("Display window", img)
k = cv.waitKey(0)
if k == ord("s"):
cv.imwrite("starry_night.png", img)
解释
作为第一步,OpenCV的python库被导入。正确的做法是另外给它起一个名字cv,在下面的内容中,它被用来引用这个库。
代码语言:javascript复制import cv2 as cv
import sys
现在,让我们来分析一下代码。作为第一步,我们从OpenCV样本中读取图像 "starry_night.jpg"。为了做到这一点,我们调用了imread函数,使用第一个参数指定的文件路径来加载图像。第二个参数是可选的,它指定了我们想要的图像的格式。这可能是:
- • IMREAD_COLOR以BGR 8位格式加载图像。这是这里使用的默认值。
- • IMREAD_UNCHANGED 载入原始图像(包括alpha通道,如果存在的话)。
- • IMREAD_GRAYSCALE 载入图像灰度图。
在读入图像后,数据将被存储在一个Mat对象中。
代码语言:javascript复制img = cv.imread(cv.samples.findFile("starry_night.jpg"))
之后,将执行检查,以确定图像是否被正确加载。
代码语言:javascript复制if img is None:
sys.exit("Could not read the image.")
然后,通过调用imshow函数来显示图像。第一个参数是窗口的标题,第二个参数是将被显示的Mat对象。
因为我们希望窗口一直显示到用户按下一个键(否则程序会很快结束),所以我们使用waitKey函数,它的唯一参数是它应该等待用户输入多长时间(以毫秒为单位)。零意味着永远等待。返回值是被按下的键。
代码语言:javascript复制cv.imshow("Display window", img)
k = cv.waitKey(0)
最后,如果按的是 "s "键,图像将被写入一个文件中。为此调用了imwrite函数,它有文件路径和Mat对象作为参数。
代码语言:javascript复制if k == ord("s"):
cv.imwrite("starry_night.png", img)