我们已经知道,图像是通过数组描述的,那么拼接图像其实就是拼接数组。NumPy提供了2个拼接数组的函数,分别是hstack函数和vstack函数,这两个拼接函数可以将两个数组水平和垂直拼接在一起,也就相当于将两幅图像水平和垂直拼接在一起,本节将详细讲解如何使用这两个函数水平拼接图像和垂直拼接图像。

  1. 水平拼接

hstack函数可以对数组进行水平拼接,hstack函数的原型如下:

hstack(tup) -> array

参数说明:

  • tup:要拼接的数组元组。

  • array:返回值,拼接后生成的新数组。

hstack函数可以拼接多个数组,但每一个参与拼接的数组必须行数相同,例如,2 × 2的数组只能与2行的数组进行拼接,2 × 3、2 × 4的数组都可以与2 × 2的数组进行拼接,但3 × 3的数组不能与2 × 2的数组进行拼接,因为前者是3行,后者是2行。

如果将2个或多个数组进行水平拼接,这些数组会横向首尾相接,如图1所示。

下面的代码分别水平拼接了3个一维数组(a、b、c)和2个二维数组(x和y)。

import numpy as np
a = np.array([1,2,3])
b = np.array([4,5,6])
c = np.array([7,8,9])
result = np.hstack((a,b,c))        # 水平拼接a数组、b数组和c数组
print(result)                    # 输出拼接结果(1×9的数组)
x = np.array([[1,2],[3, 4]])
y = np.array([['a','b','c'],['d', 'e', 'f']])
result = np.hstack((x, y))        # 水平拼接x数组和y数组
print(result)                    # 输出拼接结果(2×5的数组)

运行程序,会输出如下的结果:

[1 2 3 4 5 6 7 8 9]
[['1' '2' 'a' 'b' 'c']['3' '4' 'd' 'e' 'f']]

2. 垂直拼接

vstack函数可以对数组进行垂直拼接,vstack函数的原型如下:

vstack(tup) -> array

参数说明:

  • tup:要拼接的数组元组。

  • array:返回值,拼接后生成的新数组。

vstack函数可以拼接多个数组,但每一个参与拼接的数组必须列数相同,例如,2 × 2的数组只能与2列的数组进行拼接,3 × 2、4 × 2的数组都可以与2 × 2的数组进行拼接,但3 × 3的数组不能与2 × 2的数组进行拼接,因为前者是3列,后者是2列。

如果将2个或多个数组进行垂直拼接,这些数组会纵向首尾相接,如图2所示。

下面的代码分别垂直拼接了3个一维数组(a、b、c)和2个二维数组(x和y)。

import numpy as np
a = np.array([1,2,3])
b = np.array([4,5,6])
c = np.array([7,8,9])
result = np.vstack((a,b,c))        # 垂直拼接3个1×3的数组(a、b、c)
print(result)                    # 输出垂直拼接的结果
x = np.array([[1,2],[3, 4]])
y = np.array([['a','b'],['c', 'd'],['e', 'f']])
result = np.vstack((x, y))        # 垂直拼接1个2×2的数组和1个3×2的数组
print(result)                    # 输出垂直拼接的结果

运行程序,会输出如下的结果。

[[1 2 3][4 5 6][7 8 9]]
[['1' '2']['3' '4']['a' 'b']['c' 'd']['e' 'f']]

3. 将图像变成2 × 2网格

编写一个程序,通过水平拼接和垂直拼接,将图像变成2 × 2的网格效果,也就是横向2个同样的图像,纵向也有2个同样的图像。代码如下:

import cv2
import numpy as npimg = cv2.imread("alien.jpg")
img_h = np.hstack((img, img))          # 水平拼接2个图像
img_v = np.vstack((img_h, img_h))    # 将水平拼接的结果再垂直拼接
cv2.imshow("new_img", img_v)        # 显示拼接效果
cv2.waitKey()
cv2.destroyAllWindows()

运行程序,会看到如图3所示的拼接效果。

【计算机视觉】OpenCV 4高级编程与项目实战(Python版)【7】:拼接图像相关推荐

  1. OpenCV计算机视觉实战(Python版)_002图像基本操作

    OpenCV计算机视觉实战(Python版) https://www.bilibili.com/video/BV1ct411F7Te?p=2 数据读取-图像 cv2.IMREAD_COLOR:彩色图像 ...

  2. Java高级开发0-1项目实战-青鸟商城-Day03

    作者:田超凡 原创博文,严禁复制转载,仿冒必究 项目计划 第三天: 前台系统搭建 商城首页展示 Cms系统的实现 内容分类管理 内容管理 前台内容动态展示 1. 商城首页展示 系统架构: 页面位置: ...

  3. 视频教程-Python疫情监控完整项目实战-Python

    Python疫情监控完整项目实战 数据产品讲师,人工智能探索者,15年一线IT研发经验,国内顶级互联网行业工作背景,社区达人,著有长篇连载<胖子哥的大数据之路>,<数据实践之美> ...

  4. 视频教程-Python+Vue+Django前后端分离项目实战-Python

    Python+Vue+Django前后端分离项目实战 教学风格独特,以学员视角出发设计课程,难易适度,重点突出,架构清晰,将实战经验融合到教学中.讲授技术同时传递方法.得到广大学员的高度认可. 王进 ...

  5. java高级教程pdf_Java高级编程实用教程中文 PDF版_IT教程网

    资源名称:Java高级编程实用教程中文 PDF版 内容简介 本书是一本介绍Java高级编程的实用教程,面向具有一定Java编程基础的开发人员.本书通过对"项目"的分析.实现和讲解, ...

  6. 笨办法学Python(第四版)最新版+Python爬虫开发与项目实战+Python网络数据采集+精通Scrapy网络爬虫

    笨办法学Python(第四版)最新版+Python爬虫开发与项目实战+Python网络数据采集+精通Scrapy网络爬虫 本资料为最新整理高清带目录pdf,百度网盘下载~~~ 本资料为最新整理高清带目 ...

  7. 项目实战-----Python编写疫苗信息管理系统

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接: https://blog.csdn.net/weixin_43425784/art ...

  8. opencv 打开和保存视屏(python版)

    opencv 打开和保存视屏(python版) 打开视屏,并播放视屏 import cv2# 获取video_path的视屏 cap = cv2.VideoCapture("video_pa ...

  9. OpenCV计算机视觉实战(Python版)资源

    疲劳检测 pan.baidu.com/s/1Ng_-utB8BSrXlgVelc8ovw #导入工具包 from scipy.spatial import distance as dist from ...

最新文章

  1. 工业以太网交换机与网络交换机的区别
  2. 小学有学计算机课程,如何进行小学计算机课程有效教学.doc
  3. CALayer的属性和使用
  4. html______1
  5. java基础入门(一)
  6. Unity学习日志_全局光照GI系统简介
  7. 使用vue中遇到的一些问题以及解决方案
  8. 澳洲墨尔本大学的计算机专业,澳洲排名第一的墨尔本大学计算机专业又有变化了!...
  9. 论文阅读:Semantic Parsing on Freebase from Question-Answer Pairs
  10. 在线怎么把pdf文件转换成word文件转换器使用
  11. 如何删除word中的长横线(由三个减号---自动生成)
  12. 不会聊天?不会撩妹?宅男如何走出自闭的循环圈
  13. 年货来咯:精选年度最受欢迎干货,覆盖客户端、服务端、前端、数据、算法……...
  14. 【php + MySQL + Android】本地实验环境搭建
  15. Java 小练习(简单)—合集
  16. Spark Core:Scala单词计数
  17. 设计中的设计-设计的意义
  18. 【实验2 选择结构】7-4 sdut-C语言实验——求两个整数之中较大者
  19. 使用ITK读写DICOM序列
  20. java设置标签艺术字体颜色_Java 在Word文档中添加艺术字

热门文章

  1. 最新完成的一个全栈微信小程序商城,包含后台和小程序端,服务器端
  2. 分布式环境下的服务器时钟同步问题解决办法
  3. C语言使用EsayX库实现简易贪吃蛇
  4. CTF题目中关于图片写隐
  5. Hive 分区表 数据加载
  6. Python框架之flask
  7. Vue中$emit的用法
  8. memset()与memcpy()函数及其作用
  9. C++最小二乘法求多项式系数
  10. 面试题:机器学习的学习方式主要有哪些?