点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达
本期,我们将解释如何在Python中实现图像的镜像或翻转。大家只需要了解各种矩阵运算和矩阵操作背后的基本数学即可。
01. 依赖包要求
NumPy —用于矩阵运算并对其进行处理。
OpenCV —用于读取图像并将其转换为2D数组(矩阵)。
Matplotlib —用于将矩阵绘制为图像。
对于这个小型项目,我使用了著名的Lena图像,该图像主要用于测试计算机视觉模型。确保下载此映像并将其保存在当前工作目录中。
import cv2
import numpy as np
from matplotlib import pyplot as plt
02. 让我们开始吧
首先,我们使用imread()模块中的方法读取图像文件cv2。为此,我们只需要导入包并使用它即可。因此,通过这样做,我们获得了矩阵形式的图像。默认情况下,imread()该方法读取的图像BGR(Blue,Green,Red)格式。要读取的图像转换为常规格式,即,RGB(Red,Green,Blue),我们使用cvtColor()来自同一模块的方法cv2。
def read_this(image_file, gray_scale=False):
image_src = cv2.imread(image_file)
if gray_scale:
image_rgb = cv2.cvtColor(image_src, cv2.COLOR_BGR2GRAY)
else:
image_rgb = cv2.cvtColor(image_src, cv2.COLOR_BGR2RGB)
return image_rgb
上面的函数从传递的图像文件返回图像矩阵。如果我们要获取图像矩阵或格式,它由常规if和else条件组成。
镜像图像
要基本镜像图像,我们需要从左到右逐行反转矩阵。让我们考虑一个matrix A。
>>> A = [
[4, 1, 1],
[2, 8, 0],
[3, 8, 1]
]
如果我们要镜像此矩阵(逐行),则它将是-
>>> import numpy as np
>>> mirror_ = np.fliplr(A)
>>> mirror_
[[1, 1, 4],
[0, 8, 2],
[1, 8, 3]]
我们也可以在不使用NumPy模块的情况下执行此操作。如果是这样,我们可以使用循环并反转每一行。如果在图