opencv之读入一幅图像,显示图像以及如何保存一副图像,基础操作
本文使用的函数:
cv2.imread()读入一幅图像
cv2.imshow()显示一幅图像
cv2.imwrite()写入一幅图像
读入图像
cv2.imread(参数1,参数2)
第一个参数是要读取图像的路径
就算图像的径是错误的OpenCV 也不会提提醒你但是当你使用命令print image时得到的结果是None。
第二个参数是数应如何取幅图片,他有一下几个可取值
cv2.IMREAD_COLOR入一副彩色图像,图像的明度会忽略(默认参数)
• cv2.IMREAD_GRAYSCALE以灰度模式入图像
cv2.IMREAD_UNCHANGED入一幅图像并且包括图像的 alpha
代码演示
有代码可见,读取成功,第二个参数为0,表示使用默认参数
显示图像
我们读取到了这个图片之后,我们应该显示它,因为输出只输出一堆参数,我们可以使用imshow方法来显示
imshow(参数1,参数2)
参数1的意思就是显示的这张图片的窗口的名字,参数二是显示哪张图片(就是我们刚才读到的那张)
这个代码就是显示image并且命名窗口为first,但有一个问题,这个程序运行一瞬间就关闭,如何才能持久话这个窗口呢
使用cv2.waitkey(参数)方法可以解决这个问题,这个方法是盘绑定函数,它参数是一个毫秒单位的数字,假如
cv2.waitkey(2000),这个程序就相当于堵塞式程序,这个意思就是在两秒之内如果有键盘按下,则这个程序会立刻继续往下执行,如果两秒之内没有键盘按下,两秒之后,程序也会往下执行,就是说最多堵塞两秒钟,这样图片就可以显示至少两秒钟
如果我们在这两秒之内按下键盘的话,它的返回值是按下键盘的ascii码,如果没有按下键盘盘入则返回值为-1
如果当这个参数为0的时候,那么这个堵塞程序时间是无限,什么时候按下键盘,什么时候程序往下执行,如果不按下则程序永远无法往下执行,这就使的该程序变成图片永久显示,什么时候按下键盘,程序才会往下走完,图片消失
程序运行完之后窗口就会被销毁,当然也可以直接通过方法cv2.destroyAllWindows()来销毁窗口,不用等到方法执行完成
如果你想删特定的窗口可以使用 cv2.destroyWindow()在括号内入你想删的窗口名
我们显示这个窗口的大小是没有办法来调整的,但是当我们使用
cv2.namedWindow(窗口名,参数)方法的时候,就可以调整显示这个图片大小
窗口名和上面的那个一致,参数有两个:
cv2.WINDOW_AUTOSIZE----默认
cv2.WINDOW_NORMAL---只有这个参数才可以调整窗口
最终代码为
保存图像
cv2.imwrite(参数1,参数2)
参数1为保存的名字,参数2为保存的图片
代码
保存图像完成
下面完成一个demo
当显示图像的时候,按下esc是退出不保存,按下s是退出保存
这个程序有以下几点需要注意,第一点
cv2.waitkey(0)&0xFF,因为我的计算机是64进制,32进制的而不需要
key==27,其中27表示按键esc
ord('s')表示按键s
最终代码
# -*- coding: utf-8 -*- import numpy as np import cv2 image=cv2.imread('o.jpg',0) cv2.namedWindow('first', cv2.WINDOW_NORMAL) cv2.imshow("first",image) key=cv2.waitKey(0)&0xFF if key==27: cv2.destroyAllWindows() elif key==ord('s'): cv2.destroyAllWindows() cv2.imwrite('q.jpg', image)