【计算机视觉】OpenCV 4高级编程与项目实战(Python版)【7】:拼接图像
我们已经知道,图像是通过数组描述的,那么拼接图像其实就是拼接数组。NumPy提供了2个拼接数组的函数,分别是hstack函数和vstack函数,这两个拼接函数可以将两个数组水平和垂直拼接在一起,也就相当于将两幅图像水平和垂直拼接在一起,本节将详细讲解如何使用这两个函数水平拼接图像和垂直拼接图像。
水平拼接
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】:拼接图像相关推荐
- OpenCV计算机视觉实战(Python版)_002图像基本操作
OpenCV计算机视觉实战(Python版) https://www.bilibili.com/video/BV1ct411F7Te?p=2 数据读取-图像 cv2.IMREAD_COLOR:彩色图像 ...
- Java高级开发0-1项目实战-青鸟商城-Day03
作者:田超凡 原创博文,严禁复制转载,仿冒必究 项目计划 第三天: 前台系统搭建 商城首页展示 Cms系统的实现 内容分类管理 内容管理 前台内容动态展示 1. 商城首页展示 系统架构: 页面位置: ...
- 视频教程-Python疫情监控完整项目实战-Python
Python疫情监控完整项目实战 数据产品讲师,人工智能探索者,15年一线IT研发经验,国内顶级互联网行业工作背景,社区达人,著有长篇连载<胖子哥的大数据之路>,<数据实践之美> ...
- 视频教程-Python+Vue+Django前后端分离项目实战-Python
Python+Vue+Django前后端分离项目实战 教学风格独特,以学员视角出发设计课程,难易适度,重点突出,架构清晰,将实战经验融合到教学中.讲授技术同时传递方法.得到广大学员的高度认可. 王进 ...
- java高级教程pdf_Java高级编程实用教程中文 PDF版_IT教程网
资源名称:Java高级编程实用教程中文 PDF版 内容简介 本书是一本介绍Java高级编程的实用教程,面向具有一定Java编程基础的开发人员.本书通过对"项目"的分析.实现和讲解, ...
- 笨办法学Python(第四版)最新版+Python爬虫开发与项目实战+Python网络数据采集+精通Scrapy网络爬虫
笨办法学Python(第四版)最新版+Python爬虫开发与项目实战+Python网络数据采集+精通Scrapy网络爬虫 本资料为最新整理高清带目录pdf,百度网盘下载~~~ 本资料为最新整理高清带目 ...
- 项目实战-----Python编写疫苗信息管理系统
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接: https://blog.csdn.net/weixin_43425784/art ...
- opencv 打开和保存视屏(python版)
opencv 打开和保存视屏(python版) 打开视屏,并播放视屏 import cv2# 获取video_path的视屏 cap = cv2.VideoCapture("video_pa ...
- OpenCV计算机视觉实战(Python版)资源
疲劳检测 pan.baidu.com/s/1Ng_-utB8BSrXlgVelc8ovw #导入工具包 from scipy.spatial import distance as dist from ...
最新文章
- 工业以太网交换机与网络交换机的区别
- 小学有学计算机课程,如何进行小学计算机课程有效教学.doc
- CALayer的属性和使用
- html______1
- java基础入门(一)
- Unity学习日志_全局光照GI系统简介
- 使用vue中遇到的一些问题以及解决方案
- 澳洲墨尔本大学的计算机专业,澳洲排名第一的墨尔本大学计算机专业又有变化了!...
- 论文阅读:Semantic Parsing on Freebase from Question-Answer Pairs
- 在线怎么把pdf文件转换成word文件转换器使用
- 如何删除word中的长横线(由三个减号---自动生成)
- 不会聊天?不会撩妹?宅男如何走出自闭的循环圈
- 年货来咯:精选年度最受欢迎干货,覆盖客户端、服务端、前端、数据、算法……...
- 【php + MySQL + Android】本地实验环境搭建
- Java 小练习(简单)—合集
- Spark Core:Scala单词计数
- 设计中的设计-设计的意义
- 【实验2 选择结构】7-4 sdut-C语言实验——求两个整数之中较大者
- 使用ITK读写DICOM序列
- java设置标签艺术字体颜色_Java 在Word文档中添加艺术字