图像插值与缩放
%matplotlib inline
import cv2
import matplotlib.pyplot as plt
def imshow(img,gray=False,bgr_mode=False):
if gray:
img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
plt.imshow(img,cmap="gray")
else:
if not bgr_mode:
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
plt.imshow(img)
plt.show()
这段代码主要是一个用于在Jupyter Notebook中显示图像的辅助函数。让我们逐行解读:
-
%matplotlib inline
: 这是一个Jupyter Notebook的魔法命令,它告诉Jupyter在Notebook中内联显示matplotlib的图表,而不是弹出新的窗口。 -
import cv2
: 导入OpenCV库,用于图像处理。 -
import matplotlib.pyplot as plt
: 导入matplotlib.pyplot库,用于绘图和图像显示。 -
def imshow(img, gray=False, bgr_mode=False):
:定义了一个名为imshow
的函数,该函数用于显示图像。它接受三个参数:img
: 要显示的图像。gray
: 一个布尔值,指示是否将图像转换为灰度(默认为False
)。bgr_mode
: 一个布尔值,指示是否将图像从BGR模式转换为RGB模式(默认为False
)。
-
if gray:
: 如果gray
参数为True
,则执行以下语句块:-
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
: 使用OpenCV将图像转换为灰度。 -
plt.imshow(img, cmap="gray")
: 使用matplotlib.pyplot的imshow
函数显示灰度图像。
-
-
else:
: 如果gray
参数为False
,则执行以下语句块:-
if not bgr_mode:
: 如果bgr_mode
参数为False
,则执行以下语句块:img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
: 使用OpenCV将图像从BGR模式转换为RGB模式。
-
plt.imshow(img)
: 使用matplotlib.pyplot的imshow
函数显示图像。
-
-
plt.show()
: 显示图像。这一行代码会在Notebook中直接显示图像。
这个函数的作用是根据输入的参数显示彩色或灰度图像,确保在Jupyter Notebook中正确显示图像。
logo = cv2.imread("zju.png")
imshow(logo)
读取图像并用上面定义的函数处理,得到如下所示图像
logo.shape[:2]
读取图像尺寸:得到(829,843)
插值图像
resize函数
src:输入图像。
dst:输出图像,图像的数据类型与src相同。
dsize:输出图像的尺寸。
fx:水平轴的比例因子,如果将水平轴变为原来的两倍,则赋值为2。
fy:垂直轴的比例因子,如果将垂直轴变为原来的两倍,则赋值为2。
interpolation:差值方法的标志。
imshow(cv2.resize(logo,dsize=(500,500)))
将图像resize为500*500的尺寸,以便后续处理,得到如下图
imshow(cv2.resize(logo,dsize=(100,100)))
将图像缩小为100*100尺寸,得到如下图
图像翻转
imshow(cv2.flip(logo,0)) # 上下翻转
上下翻转得到如下图
imshow(cv2.flip(logo,1)) # 1 左右 翻转
左右翻转得到如下图
图像的合并
img1 = cv2.flip(logo,0)
img2 = cv2.flip(logo,1)
imshow(cv2.hconcat([img1,img2]))
img3 = cv2.hconcat([img1,img2])
img4 = cv2.flip(img3,1)
imshow(cv2.vconcat([img3,img4]))