3、水面倒影效果

水面倒影效果

概要

我们会使用 Matplotlib 的 pyplot 模块创建图并显示图像:

用以下魔术命令,以便将图像显示在笔记本中而不是在新的显示窗口中:

如果要显示彩色图像,可以使用以下命令将图像从 BGR 转换为 RGB

最后使用 plt.show() 命令显示图像。

import matplotlib.pyplot as plt

%matplotlib inline


实验目标

实现一个水面过滤器,该过滤器负责垂直翻转漂浮在水体上的对象。可以在下图中看到这种效果:

3、水面倒影效果_第1张图片

 
实验内容

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)

原图: 

 3、水面倒影效果_第2张图片

 新创建图:

3、水面倒影效果_第3张图片

 原图copy到上半部分:

 

3、水面倒影效果_第4张图片

 结果:

3、水面倒影效果_第5张图片

结语

在本实验我们利用了NumPy 、cv2的结合实现图像镜面效果。 

你可能感兴趣的:(数字图像处理,python,开发语言,图像处理,opencv)