1. 读入图像
- cv2.imread(path,mode):path是图像的路径,mode是读入图片时的模式:
- cv2.IMREAD_COLOR:读入彩色图像,忽略透明度
- cv2.IMREAD_GRAYSCALE:以灰度模式读入图像
- cv2.IMREAD_UNCHANGED:读入图像,包括alpha通道
# 以彩色图模式读取lena.jpg图片,并给变量img
img=cv2.imread("lena.jpg",cv2.IMREAD_COLOR)
2. 创建面板
一般可以先创建一个面板,再在面板上面显示图片,好处是你可以在这一步设置显示窗口是否可调节;当然也可以省略这一步,直接显示图片,但是这样显示的窗口是无法人为调节的;
- cv2.namedWindow(title,mode):title是窗口的名字,显示图片是需要title一致,title不一致则相当于另新建创建,mode是选择是否可调节:
- cv2.WINDOW_AUTOSIZE:程序根据图片自动调节窗口大小,用户无法调节
- cv2.WINDOW_NORMAL:用户可以自己调节窗口大小
# 新建一个名为蕾娜的面板,模式为用户可调节
cv2.namedWindow("cs",cv2.WINDOW_NORMAL)
2. 显示图片
- cv2.imshow(title,img):title是给窗口起个名字也是该窗口的唯一id;img是要显示的图像
# 在面板"cs"上显示图像img
cv2.imshow("cs",img)
3.等待用户按键
- cv2.waitKey(mode):一个键盘绑定函数,单位是ms,看是否有键盘输入,返回的是键的ACSII码,mode则是输入整数:
- 0:无限期等待按键
- 一个大于0的整数:等待这么多秒
如果要用户指定输入某个按键:
if cv2.waitKey(0)==ord(‘q’): # 如果输入按键q则:
cv2.waitKey(0) #等待用户操作,再执行下一步
或者:
cv2.waitKey(100) #图像img显示100ms后自动关闭,执行下一步
或者:
if cv2.waitKey(0) == ord('q'): #一直等待,若用户键入q键,则条件成立,执行下一步
# ord('q')也可以直接是q的ascii码,或者像上面一样ord转码
4. 销毁窗口
- cv2.destoryWindows(title):指定销毁名为title的窗口
或者: - cv2.destoryAllWindows():销毁所有窗口
cv2.destoryWindows("cs") # 销毁名为cs的面板
或者:
cv2.destoryAllWindows() # 销毁所有面板
5.保存图像
- cv2,imwrite(name,img):name是保存图片是给图片起的路径(包括名字和后缀名),img是需要保存的图片
cv2.imwrite("image/lena1.jpg",img) #将img保存到image下面,且名字为lena1.jpg
6.总结
以彩色照片读入lena.jpg,并给变量img
显示img图像,窗口名为image
无限期等待用户键盘,若有则将键盘动作给变量k
判断若键盘输入是ESC(ESC的ASCII码是27):销毁所有窗口
若键盘输入是"q":另存为lena_1.jpg,然后销毁所有窗口
import cv2
img=cv2.imread("lena.jpg",cv2.IMREAD_COLOR)
cv2.imshow("image",img)
k=cv2.waitKey(0)
if k==27:
cv2.destoryWindows()
elif k==ord('s'):
cv2.imwrite("lena_1.jpg",img)
cv2.destoryAllWindows()