3文章目录:『youcans 的 OpenCV 例程300篇 - 总目录』
【OpenCV 例程300篇】10. 图像的拼接(np.hstack)
用 Numpy 的数组堆叠方法可以进行图像的拼接,操作简单方便。
方法说明:
retval = numpy.hstack((img1, img2, …)) # 水平拼接
retval = numpy.vstack((img1, img2, …)) # 垂直拼接
- np.hstack() 按水平方向(列顺序)拼接 2个或多个图像,图像的高度(数组的行)必须相同。
- np.vstack() 按垂直方向(行顺序)拼接 2个或多个图像,图像的宽度(数组的列)必须相同。
- 综合使用 np.hstack() 和 np.vstack() 函数,可以实现图像的矩阵拼接。
- np.hstack() 和 np.vstack() 只是简单地将几张图像直接堆叠而连成一张图像,并未对图像进行特征提取和边缘处理,因而并不能实现图像的全景拼接。
参数说明:
- img1, img2, …:拼接前的图像,nparray 多维数组
- 返回值 retval:拼接后的图像,nparray 多维数组
基本例程:
# 1.18 图像拼接
img1 = cv2.imread("../images/imgLena.tif") # 读取彩色图像(BGR)
img2 = cv2.imread("../images/logoCV.png") # 读取彩色图像(BGR)
img1 = cv2.resize(img1, (400, 400))
img2 = cv2.resize(img2, (300, 400))
img3 = cv2.resize(img2, (400, 300))
imgStackH = np.hstack((img1, img2)) # 高度相同图像可以横向水平拼接
imgStackV = np.vstack((img1, img3)) # 宽度相同图像可以纵向垂直拼接
print("Horizontal stack:\nShape of img1, img2 and imgStackH: ", img1.shape, img2.shape, imgStackH.shape)
print("Vertical stack:\nShape of img1, img3 and imgStackV: ", img1.shape, img3.shape, imgStackV.shape)
cv2.imshow("DemoStackH", imgStackH) # 在窗口显示图像 imgStackH
cv2.imshow("DemoStackV", imgStackV) # 在窗口显示图像 imgStackV
key = cv2.waitKey(0) # 等待按键命令
本例程的运行结果如下:
Horizontal stack:
Shape of img1, img2 and imgStackH: (400, 400, 3) (400, 300, 3) (400, 700, 3)
Vertical stack:
Shape of img1, img3 and imgStackV: (400, 400, 3) (300, 400, 3) (700, 400, 3)
(本节完)
【第1章:图像的基本操作】
06. 像素的编辑(img.itemset)
07. 图像的创建(np.zeros)
08. 图像的复制(np.copy)
09. 图像的裁剪(cv2.selectROI)
10. 图像的拼接(np.hstack)
版权声明:
youcans@xupt 原创作品,转载必须标注原文链接:(https://blog.csdn.net/youcans/article/details/125112487)
Copyright 2022 youcans, XUPT
Crated:2021-11-18
欢迎关注专栏: 『youcans 的 OpenCV 例程 300 篇』