python opencv将多个图放在一个窗口的实例详解


Posted in Python onFebruary 28, 2022

编程需求:使用python+opencv对图像进行处理,把两张图放在一起显示

方法:使用numpy模块中的水平堆叠竖直堆叠完成所有图像的堆叠,最后当成一整张图显示。

注意:把不同的尺寸(宽和高)的图片或不同的颜色通道在一起来展示,会发生黑屏,所以要么把两张图的高度设置相同,要么宽度相同。这样才能正常显示。

举个栗子:

1.只设置两张图的高相同,拼接两图,显示;只设置两张图的宽相同,拼接两图,显示。

import cv2
import numpy as np
#读图1和图2
img1 = cv2.imread(r"C:\Users\thorne\PycharmProjects\biyesheji\image\3.jpg")
img2 = cv2.imread(r"C:\Users\thorne\PycharmProjects\biyesheji\image\1.jpeg")
#重新设置图1的宽和高
img1 = cv2.resize(img1, (400, 400))
#设置图2的高为400,与图1相同,宽自己任意设置,我这里设置为200
img2 = cv2.resize(img2, (200, 400))
#设置图2的宽为300,与图1相同,高自己任意设置,我这里设置为200
img3 = cv2.resize(img2, (400, 200))
# 高度相同的图像,横向水平拼接图
imgStackH = np.hstack((img1, img2))
# 宽度相同的图像,垂直水平拼接图
imgStackV = np.vstack((img1, img3))
# 在窗口显示图像 imgStackH 横向水平拼接图
cv2.imshow("DemoStackH", imgStackH)
# 在窗口显示图像 imgStackV垂直水平拼接图
cv2.imshow("DemoStackV", imgStackV)
key = cv2.waitKey(0)  # 等待按键命令

运行结果:宽度相同时拼接

python opencv将多个图放在一个窗口的实例详解

 高度相同时拼接

python opencv将多个图放在一个窗口的实例详解

 从上面结果可以看出,虽然两张图拼接到了一起,但是各自的比例完全不对,所以在使用这个方法的时候要知道:这个方法只适用于两张图片/多张图片 宽高比例相同或者相似的情况。

原本这两张图的比例是相似的,但是为了理解,上面的例子我把图1的比例改了。

下面展示两张比例相似的图拼接的结果:(只拼接高度相同的情况,宽度相同的情况与这个类似,就不写了)

python opencv将多个图放在一个窗口的实例详解

附代码: 

import cv2
import numpy as np
#读图
img1 = cv2.imread(r"C:\Users\thorne\PycharmProjects\biyesheji\image\3.jpg")
img2 = cv2.imread(r"C:\Users\thorne\PycharmProjects\biyesheji\image\1.jpeg")
#1.设置两个图的高相同,然后拼接
#打印了解图1的高:634 和宽:400 (shape方法第一个参数是 高)
print(img1.shape)
#打印了解图2的宽和高:(1000, 667)
print(img2.shape)
#设置图2的高为:634 resize设置宽和高的第二个参数是 高,图2的宽自定义,这里我设置的400
img2 = cv2.resize(img2, (400, 634))
# 高度相同图像可以横向水平拼接
imgStackH = np.hstack((img1, img2))
# 在窗口显示横向拼接图像 imgStackH
cv2.imshow("DemoStackH", imgStackH)
key = cv2.waitKey(0)  # 等待按键命令

到此这篇关于python opencv将多个图放在一个窗口的文章就介绍到这了,更多相关python opencv多个图放在一个窗口内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
在Python中用has_key()方法查找键是否存在的教程
May 21 Python
Pycharm学习教程(2) 代码风格
May 02 Python
解决Tensorflow使用pip安装后没有model目录的问题
Jun 13 Python
对numpy中shape的深入理解
Jun 15 Python
python的mysql数据库建立表与插入数据操作示例
Sep 30 Python
浅谈Python type的使用
Nov 19 Python
python 实现矩阵填充0的例子
Nov 29 Python
Pytorch使用MNIST数据集实现CGAN和生成指定的数字方式
Jan 10 Python
Python 读取有公式cell的结果内容实例方法
Feb 17 Python
Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式
May 11 Python
Python如何实现大型数组运算(使用NumPy)
Jul 24 Python
Python如何输出百分比
Jul 31 Python
pandas中关于apply+lambda的应用
Feb 28 #Python
Python中的datetime包与time包包和模块详情
Feb 28 #Python
Python 数据可视化神器Pyecharts绘制图像练习
Python使用OpenCV实现虚拟缩放效果
python保存图片的四个常用方法
Python可视化学习之seaborn调色盘
Python可视化学习之matplotlib内置单颜色
You might like
PHP的FTP学习(二)[转自奥索]
2006/10/09 PHP
php SQL之where语句生成器
2009/03/24 PHP
php Smarty date_format [格式化时间日期]
2010/03/15 PHP
php操作(删除,提取,增加)zip文件方法详解
2015/03/12 PHP
初识通用数据库操作类――前端easyui-datagrid,form(php)
2015/07/31 PHP
jquery ajax请求实例深入解析
2012/11/26 Javascript
js函数排序的实例代码
2013/07/01 Javascript
使用JS取得焦点(focus)元素代码
2014/03/22 Javascript
JavaScript版的TwoQueues缓存模型
2014/12/29 Javascript
jQuery使用之处理页面元素用法实例
2015/01/19 Javascript
百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换
2016/02/19 Javascript
JQuery组件基于Bootstrap的DropDownList(完整版)
2016/07/05 Javascript
javascript实现获取指定精度的上传文件的大小简单实例
2016/10/25 Javascript
完美实现js选项卡切换效果(一)
2017/03/08 Javascript
Vue学习笔记进阶篇之vue-cli安装及介绍
2017/07/18 Javascript
详解JS中的柯里化(currying)
2017/08/17 Javascript
BootStrap Validator 根据条件在JS中添加或移除校验操作
2017/10/12 Javascript
vue轮播图插件vue-concise-slider的使用
2018/03/13 Javascript
解决vue项目中页面调用数据 在数据加载完毕之前出现undefined问题
2019/11/14 Javascript
[02:32]DOTA2英雄基础教程 祸乱之源
2013/12/23 DOTA
[01:38]DOTA2辉夜杯 欢乐的观众现场采访
2015/12/26 DOTA
[58:21]DOTA2亚洲邀请赛 4.3 突围赛 Liquid vs VGJ.T 第二场
2018/04/04 DOTA
Python面向对象之继承代码详解
2018/01/29 Python
Python制作词云图代码实例
2019/09/09 Python
python给指定csv表格中的联系人群发邮件(带附件的邮件)
2019/12/31 Python
Python爬虫实例——scrapy框架爬取拉勾网招聘信息
2020/07/14 Python
pymysql模块使用简介与示例
2020/11/17 Python
Scrapy-Redis之RedisSpider与RedisCrawlSpider详解
2020/11/18 Python
Prototype如何更新局部页面
2013/03/03 面试题
仓库门卫岗位职责
2013/12/22 职场文书
客户表扬信范文
2014/01/10 职场文书
初二物理教学反思
2014/01/29 职场文书
大学社团计划书
2014/05/01 职场文书
网站推广策划方案
2014/06/04 职场文书
刘胡兰观后感
2015/06/16 职场文书
高中班主任培训心得体会
2016/01/07 职场文书