如何使用opencv和matplotlib把多个图片显示在一个窗体内
时间:2022-06-04
本文章向大家介绍如何使用opencv和matplotlib把多个图片显示在一个窗体内,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在使用opencv处理一些计算机视觉方面的一些东西时,经常会遇到把多张图片放在一个窗体内对比展示,而不是同时打开多个窗体,opencv作为一个专业的科学计算库,虽然也提供了方法,但使用起来并不是特别灵活而matplotlib作为一个专业的图形库则弥补了这个缺点,下面我们来看下使用。
使用opencv展示多张图片
def opecv_muti_pic():
# 图1
img = cv.imread('E:\tmp\cat.jpg')
# 图2
img2 = cv.imread('E:\tmp\cat.jpg')
# 图集
imgs = np.hstack([img,img2])
# 展示多个
cv.imshow("mutil_pic", imgs)
#等待关闭
cv.waitKey(0)
`
注意:
虽然opencv也能正常展示多个图片,但是限制比较大,比如说只能同样尺寸大小的图片,颜色通道一样才能放在一起展示,如果你想展示多个不同的图片在一个opencv的窗体里面,目前好像还不行,包括同一个图片,一个彩色,一个灰度图片都不可以放在一个窗体中,基于这个原因我们大多数时候才使用matplotlib来完成这个任务。
使用matplotlib展示多张图片
def matplotlib_multi_pic2():
plt.gcf().canvas.set_window_title('Test')
plt.gcf().suptitle("multi pic test")
# img = cv.imread('E:\tmp\cat.jpg')
img = cv.imread('E:\tmp\cat.jpg')
gray=cv.cvtColor(img,cv.COLOR_BGR2GRAY)
img2 = cv.imread('E:\tmp\test6.jpg')
gray2 = cv.cvtColor(img2,cv.COLOR_BGR2GRAY)
img3 = cv.imread('E:\tmp\hough.jpg')
#如果总图片个数不超过10,我们还可以用快速的方法
plt.subplot(321),plt.imshow(img),plt.title("321")
plt.subplot(322),plt.imshow(gray),plt.title("322")
plt.subplot(323),plt.imshow(img2),plt.title("323")
plt.subplot(324),plt.imshow(gray2),plt.title("324")
plt.subplot(326),plt.imshow(img3),plt.title("326")
plt.show()
`
另外一种写法:
def matplotlib_multi_pic1():
for i in range(9):
img = cv.imread('E:\tmp\cat.jpg')
title="title"+str(i+1)
#行,列,索引
plt.subplot(3,3,i+1)
plt.imshow(img)
plt.title(title,fontsize=8)
plt.xticks([])
plt.yticks([])
plt.show()
`
推荐
源码已经上传到我的github中,感兴趣的朋友可以fork学习:
https://github.com/qindongliang/opecv3-study/tree/master
参考文档:
https://matplotlib.org/api/_as_gen/matplotlib.pyplot.subplot.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- leetcode之单词替换
- KMP算法分析
- Spring Boot 系列:最新版优雅停机详解
- 前端学数据结构与算法(八): 单词前缀匹配神器-Trie树的实现及其应用
- 突击并发编程JUC系列-Locksupport 与 Condition
- 01.视频播放器框架介绍
- C#扫描器编写各种问题荟萃
- JavaScript中的浅拷贝与深拷贝
- 自己实现一个VUE响应式--VUE响应式原理
- 各种CSS居中方案
- JavaScript的内存管理
- 实现自己的Vue Router -- Vue Router原理解析
- G级大文件分割器 + 核心源码
- 前端也能学算法:JS版常见排序算法-冒泡,插入,快排,归并
- 前端也能学算法:JS版链表