一、重要函数介绍
1、读取图像: cv2.imread()
使用函数 cv2.imread()
读入图像。
参数1
:图像名字(图像和程序在同一文件夹下) 或 路径+名字(图像和路径不在同一文件夹下)
参数2
:告诉函数应该如何读取这幅图片。
参数2的另一些取值:
cv2.IMREAD_COLOR
: 读入一副彩色图像。 图像的透明度会被忽略, 这是默认参数。或者该参数也可以直接写成0。cv2.IMREAD_GRAYSCALE
: 以灰度模式读入图像。或者该参数也可以直接写成1。cv2.IMREAD_UNCHANGED
: 读入一幅图像,并且包括图像的 alpha 通道。或者该参数也可以直接写成2。
需要注意的是:就算图像的路径是错的, OpenCV 也不会提醒你的, 但是当你使用命令 print img 时得到的结果是 None。
2、 显示图像: cv2.imshow()
使用函数 cv2.imshow()
显示图像, 窗口会自动调整为图像大小。
参数1
:窗口名字
参数2
:图像名字
可以创建多个窗口, 只要你喜欢, 但是必须给他们不同的名字。
cv2.namedWindow()
:可以先创建一个窗口, 之后再加载图像。 这种情况下, 你可以决定窗口是否可以调整大小。
初始设定函数标签是 cv2.WINDOW_AUTOSIZE
,但是如果你把标签改成 cv2.WINDOW_NORMAL
, 你就可以调整窗口大小了。 当图像维度太大, 或者要添加轨迹条时, 调整窗口大小将会很有用。
3、关闭窗口
新建窗口之后, 可以通过检测到指定按键来关闭窗口。
3.1 按键检测
cv2.waitKey()
是一个键盘绑定函数,需要指出的是它的时间尺度是毫秒级。
函数等待特定的几毫秒, 看是否有键盘输入。 特定的几毫秒之内, 如果按下任意键, 这个函数会返回按键的 ASCII 码值, 程序将会继续运行。 如果没有键盘输入, 返回值为 -1, 如果我们设置这个函数的参数为 0, 那它将会无限期的等待键盘输入。
3.2删除窗口
cv2.destroyAllWindows()
可以轻易删除任何我们建立的窗口。
cv2.destroyWindow()
, 在括号内输入你想删除的特定窗口名。
4、保存图像
cv2.imwrite()
来保存一个图像。
首先需要一个文件名, 之后才是你要保存的图像。
二、实际案例
我们把如下的彩色图片打开并显示灰度图, 并当按下 s 按键时, 把灰度图保存到照片 grayimage.jpg。
1、 建立opencv的python脚本,并命名为test.py,输入程序
# -*- coding: utf-8 -*-
import numpy as np
import cv2
img = cv2.imread('xiaor.jpg',0) #0:gray 灰度;1或者不写,是全彩的
#img = cv2.imread('xiaor.jpg')#全部信息
cv2.imshow('image',img) #把读取到img内的图像数据显示到名为image的窗口中
k = cv2.waitKey(0)&0xFF #等待按键
if k == 27: # wait for ESC
cv2.destroyAllWindows()
elif k == ord('s'): #wait for KEY 's' to save and exit
cv2.imwrite('grayimage.jpg',img)
cv2.destroyAllWindows()
2、放置图片1.png到改文件夹下
3、在终端输入以下命令,运行程序。
python test.py
4、运行结果如下,按下s
保存图像为:grayimage.png