OpenCV:图像的读入,显示和保存

0引言

OpenCV作为图像处理的最常用工具,在图像领域具有极其重要的地位。笔者最近初学OpenCV相关算法和技术,主要用到的资料为OpenCV的官方文档及翻译材料,采用的OpenCV版本为3.3.1版。学习之余,将学习笔记整理成文,便于后期查阅,也给同样在学习路上的同学一个参考。本人才疏,难免出错,望各路大神批评指正!

1环境配置

(1)PyCharm Edition(下载地址:http://www.jetbrains.com/pycharm/)

(2)OpenCV(下载地址:https://opencv.org/)

(3)matplotlib(下载地址:https://pypi.org/project/matplotlib/)

2源代码及说明

(1)读入图像

使用函数cv2.imread()读入图像。这幅图像应该再此程序的工作路径,或者给函数指定完整的路径,第二个参数是要告诉函数应该如何读取这幅图片。

OpenCV:图像的读入,显示和保存_第1张图片

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Created on 2019/2/21 15:12

@author:Bob_L
"""

import numpy as np
import cv2

# 读入图像
img = cv2.imread('lena.jpg',0)

(2)显示图像

使用函数cv2.imshow()显示图像。窗口会自动调整为图像大小。第一个参数是窗口的名字,其次才是我们的图像。你可以多创建多个窗口,但是必须要给出不同的名字。

# 显示图像
cv2.imshow("image",img)
print(cv2.waitKey(0))
cv2.destroyAllWindows()

 cv2.waitKey() 是一个键盘绑定函数。需要指出的是它的时间尺度是毫秒级。函数等待特定的几毫秒,看是否有键盘输入。特定的几毫秒之内,如果按下任意键,这个函数会返回按键的ASCII 码值,程序将会继续运行。如果没有键盘输入,返回值为-1,如果我们设置这个函数的参数为0,那它将会无限期的等待键盘输入。它也可以被用来检测特定键是否被按下,例如按键a 是否被按下,这个后面我们会接着讨论。cv2.destroyAllWindows() 可以轻易删除任何我们建立的窗口。如果你想删除特定的窗口可以使用cv2.destroyWindow(),在括号内输入你想删除的窗口名。

cv2.namedWindow('image',cv2.WINDOW_NORMAL)
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

OpenCV:图像的读入,显示和保存_第2张图片 

(3)保存图像

使用函数cv2.imwrite()来保存一个图像。首先需要一个文件名,之后才是你要保存的图像。

# 保存图像
cv2.imwrite('lenagray.jpg',img)

 (4)总结

下面的程序将会加载一个灰度图,显示图片,按下’s’键保存后退出,或者按下ESC 键退出不保存。

# 总结
cv2.imshow('image',img)
k = cv2.waitKey(0)&0xFF
if k == 27:
    cv2.destroyAllWindows()
elif k == ord('s'):
    cv2.imwrite('lenagray.png',img)

3总结

python中的matplotlib绘图库除了可以完成各种各样的绘图外,也可以完成各类似的功能,我们可以用它来放大,保存图像等。值得注意的是,彩色图像使用OpenCV 加载时是BGR 模式。但是Matplotib 是RGB模式。所以彩色图像如果已经被OpenCV 读取,那它将不会被Matplotib 正确显示。

你可能感兴趣的:(图像处理,OpenCV,图像处理)