我们会使用 Matplotlib 的 pyplot
模块创建图并显示图像:
用以下魔术命令,以便将图像显示在笔记本中而不是在新的显示窗口中:
如果要显示彩色图像,可以使用以下命令将图像从 BGR
转换为 RGB
。
最后使用 plt.show()
命令显示图像。
import matplotlib.pyplot as plt
%matplotlib inline
实现一个水面过滤器,该过滤器负责垂直翻转漂浮在水体上的对象。可以在下图中看到这种效果:
import cv2
import numpy as np
import matplotlib.pyplot as plt
# 使用以下魔术命令,以便将图像显示在notebook中
%matplotlib inline
# 读取图像
zebra = cv2.imread('./zebra.jpg') # BGR格式
print(zebra.shape) # 查看现状
hight, width = zebra.shape[:2] # 存储图像高和宽
plt.imshow(zebra[:,:,::-1]) # 将BGR格式转为RGB,显示图像
# 创建新的图片,height为原图两倍,数据类型为uint8, 全0填充
new_zebra = np.zeros((2*hight, width, 3), dtype='uint8')
print(new_zebra.shape) # 查看现状
plt.imshow(new_zebra[:,:,::-1])
# 原图copy到上半部分
new_zebra[:hight, :width, :] = zebra
plt.imshow(new_zebra[:,:,::-1])
# 原图上下倒置copy到下半部分
new_zebra[hight:, :width, :] = zebra[::-1, :, :] # y方向上实现上下倒置, 你也可以试试实现左右倒置
plt.imshow(new_zebra[:,:,::-1])
# 保存图片
cv2.imwrite('./new_zebra.jpg', new_zebra)
在本实验我们利用了NumPy 、cv2的结合实现图像镜面效果。