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

代码演示

opencv之读入一幅图像,显示图像以及如何保存一副图像,基础操作

opencv之读入一幅图像,显示图像以及如何保存一副图像,基础操作

有代码可见,读取成功,第二个参数为0,表示使用默认参数

显示图像

我们读取到了这个图片之后,我们应该显示它,因为输出只输出一堆参数,我们可以使用imshow方法来显示

imshow(参数1,参数2)

参数1的意思就是显示的这张图片的窗口的名字,参数二是显示哪张图片(就是我们刚才读到的那张)

opencv之读入一幅图像,显示图像以及如何保存一副图像,基础操作

这个代码就是显示image并且命名窗口为first,但有一个问题,这个程序运行一瞬间就关闭,如何才能持久话这个窗口呢

使用cv2.waitkey(参数)方法可以解决这个问题,这个方法是盘绑定函数,它参数是一个毫秒单位的数字,假如

cv2.waitkey(2000),这个程序就相当于堵塞式程序,这个意思就是在两秒之内如果有键盘按下,则这个程序会立刻继续往下执行,如果两秒之内没有键盘按下,两秒之后,程序也会往下执行,就是说最多堵塞两秒钟,这样图片就可以显示至少两秒钟

opencv之读入一幅图像,显示图像以及如何保存一副图像,基础操作

如果我们在这两秒之内按下键盘的话,它的返回值是按下键盘的ascii码,如果没有按下键盘盘入则返回值为-1

如果当这个参数为0的时候,那么这个堵塞程序时间是无限,什么时候按下键盘,什么时候程序往下执行,如果不按下则程序永远无法往下执行,这就使的该程序变成图片永久显示,什么时候按下键盘,程序才会往下走完,图片消失

程序运行完之后窗口就会被销毁,当然也可以直接通过方法cv2.destroyAllWindows()来销毁窗口,不用等到方法执行完成

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

我们显示这个窗口的大小是没有办法来调整的,但是当我们使用

cv2.namedWindow(窗口名,参数)方法的时候,就可以调整显示这个图片大小

窗口名和上面的那个一致,参数有两个:

  1. cv2.WINDOW_AUTOSIZE----默认

  2. cv2.WINDOW_NORMAL---只有这个参数才可以调整窗口

最终代码为

opencv之读入一幅图像,显示图像以及如何保存一副图像,基础操作

保存图像

cv2.imwrite(参数1,参数2)

参数1为保存的名字,参数2为保存的图片

代码

opencv之读入一幅图像,显示图像以及如何保存一副图像,基础操作

opencv之读入一幅图像,显示图像以及如何保存一副图像,基础操作

保存图像完成

下面完成一个demo

当显示图像的时候,按下esc是退出不保存,按下s是退出保存

opencv之读入一幅图像,显示图像以及如何保存一副图像,基础操作

这个程序有以下几点需要注意,第一点

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)

相关推荐