【OpenCV 例程300篇】10. 图像的拼接(np.hstack)

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 篇』

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

youcans_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值