目标:
- 学习使用OpenCV读写图片
- 学习使用OpenCV保存图片
- 学习使用OpenCV和Matplotlib展示图片
1.读图片
使用 cv2.imread(img_path,mode)函数读取图片
- cv2.IMREAD_COLOR : 默认选项 ,加载图像时忽略透明度,mode = 1;
- cv2.IMREAD_GRAYSCALE : 加载灰度值图像,mode = 0;
- cv2.IMREAD_UNCHANGED : 加载包含alpha通道的图像,mode = -1.
import numpy as np
import cv2
# 用灰度值模式加载图片
img = cv2.imread('1.jpg',0)
注:如果加载路径出错,加载函数不会有任何提示,但是print(img)会返回None。
2.展示图片
使用cv2.imshow(img_show_name,img)展示图片,窗口会自适应图片大小。
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.waitkey控制显示窗口时间,单位是毫秒。 cv2.destroyAllWindows()销毁所有创建的窗口。 cv2.destroyWindows(img_show_name)销毁特定名字的窗口。
也可以先创建窗口再加载图像:
cv2.namedWindow('image', cv2.WINDOW_AUTOSIZE)
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
- cv2.namedWindow(img_show_name,mode)函数 创建一个可以放图片的窗口。
- cv2.WINDOW_AUTOSIZE参数会设置显示窗口适应图片尺寸,使用cv2.WINDOW_NORMAL参数可以自由缩放图片窗口。
3.写入图片
用cv2.imwrite(img_name,img)函数写入图片。
import numpy
import cv2
img = cv2.imread('3.jpg',1)
cv2.imwrite('1.jpg',img)
例子:读,写,展示,关闭
import numpy as np
import cv2
img = cv2.imread('messi5.jpg',0)
cv2.imshow('image',img)
k = cv2.waitKey(0)
if k == 27: # 等ESC键关闭窗口
cv2.destroyAllWindows()
elif k == ord('s'): # 等s键关闭窗口
cv2.imwrite('messigray.png',img)
cv2.destroyAllWindows()
4.使用Matplotlib展示图片
import numpy as np
import cv2
from matplotlib import pyplot as plt
img = cv2.imread('3.jpg',0)
plt.imshow(img, cmap = 'gray', interpolation = 'bicubic')
plt.xticks([]), plt.yticks([])
plt.show()
注:opencv默认使用BGR模式读取图片数据矩阵,matplotlib默认使用RGB.