python opencv 同窗口显示多个图像

2023-11-07

        为了便于比对图像处理前后的效果,特别是算法处理前后的效果图,我们需要同时显示多张图片。这里采用opencv图像拼接的方法来实现我们想要的效果。

1 定义函数show_multi_img

        定义图片显示函数show_multi_img,共包括5参数,各个参数的意义和类型分别如下:

        (1)scale:float类型,图像缩放比例,即按比例对图像进行缩放。

        (2)imglist:list类型,即待显示的图像数据组成的列表。

        (3)order:list或tuple类型,指图像显示窗口的行和列,order[0]表示行,order[1]表示列。默认取值为1行N列,N为imglist的长度,即待显示图像的张数。

        (4)border:int类型,即图像间最小的间隔大小。

        (5)border:tuple类型,图像间隔区的颜色。

        该函数兼容了不同尺寸图片同时显示。

2 示例代码

# -*- coding: utf-8 -*-
"""
乐乐感知学堂公众号
@author: https://blog.csdn.net/suiyingy
"""

import cv2
import numpy as np

def show_multi_imgs(scale, imglist, order=None, border=10, border_color=(255, 255, 0)):
    """
    :param scale: float 原图缩放的尺度
    :param imglist: list 待显示的图像序列
    :param order: list or tuple 显示顺序 行×列
    :param border: int 图像间隔距离
    :param border_color: tuple 间隔区域颜色
    :return: 返回拼接好的numpy数组
    """
    if order is None:
        order = [1, len(imglist)]
    allimgs = imglist.copy()
    ws , hs = [], []
    for i, img in enumerate(allimgs):
        if np.ndim(img) == 2:
            allimgs[i] = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
        allimgs[i] = cv2.resize(img, dsize=(0, 0), fx=scale, fy=scale)
        ws.append(allimgs[i].shape[1])
        hs.append(allimgs[i].shape[0])
    w = max(ws)
    h = max(hs)
    # 将待显示图片拼接起来
    sub = int(order[0] * order[1] - len(imglist))
    # 判断输入的显示格式与待显示图像数量的大小关系
    if sub > 0:
        for s in range(sub):
            allimgs.append(np.zeros_like(allimgs[0]))
    elif sub < 0:
        allimgs = allimgs[:sub]
    imgblank = np.zeros(((h+border) * order[0], (w+border) * order[1], 3)) + border_color
    imgblank = imgblank.astype(np.uint8)
    for i in range(order[0]):
        for j in range(order[1]):
            imgblank[(i * h + i*border):((i + 1) * h+i*border), (j * w + j*border):((j + 1) * w + j*border), :] = allimgs[i * order[1] + j]
    return imgblank


if __name__ == '__main__':
    image = cv2.imread('lena.jpg')
    img = show_multi_imgs(0.9, [image, image, image, image, image, image], (2, 3))
    cv2.namedWindow('multi', 0)
    cv2.imshow('multi', img)
    cv2.waitKey(0)

3 测试效果

        测试结果如下图所示:

更多三维、二维感知算法和金融量化分析算法请关注“乐乐感知学堂微信公众号,并将持续进行更新。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python opencv 同窗口显示多个图像 的相关文章

  • 将 JSON 发布到 Python CGI

    我已经安装了 Apache2 并且 Python 可以工作 但我有一个问题 我有两页 一个是 Python 页面 另一个是带有 JQuery 的 Html 页面 有人可以告诉我如何让我的 ajax 帖子正常工作吗
  • 通过 python 中的另外两个修改数组[重复]

    这个问题在这里已经有答案了 假设我们有三个一维数组 A 长度为 5 B 长度相同 示例中为5 C 更长 比如长度为 100 C最初用零填充 A给出索引C应更改的元素 它们可能会重复 以及B给出应添加到初始零的值C 例如 如果A 1 3 3
  • 为什么在连接两个字符串时 Python 比 C 更快?

    目前我想比较 Python 和 C 用来处理字符串的速度 我认为 C 应该比 Python 提供更好的性能 然而 我得到了完全相反的结果 这是 C 程序 include
  • django 模板 - 如何动态访问变量?

    假设我有一个具有以下上下文的 django 模板 data1 this is data1 data2 this is data2 data name data2 现在我知道了data name 假设它是 data2 是否可以用它来访问变量d
  • 带有 mkdocs 的本地 mathjax

    我想在无法访问互联网的计算机上使用 MathJax 和 Mkdocs 因此我不能只调用 Mathjax CDN Config mkdocs yml site name My Docs extra javascript javascripts
  • Django 多对多关系(类别)

    我的目标是向我的 Post 模型添加类别 我希望以后能够按不同类别 有时是多个类别 查询所有帖子 模型 py class Category models Model categories 1 red 2 blue 3 black title
  • 查找与另一列 Pandas 中的唯一值关联的列中的值的交集

    如果我有一个像这样的数据框 非常小的例子 col1 col2 0 a 1 1 a 2 2 b 1 3 b 2 4 b 4 5 c 1 6 c 2 7 c 3 我想要所有的交集col2当价值观与其独特性相关时col1值 因此在这种情况下 交集
  • 正在使用 PIL 保存损坏的图像

    我遇到一个问题 操作图像像素导致保存损坏的图像 因此 我使用 PIL 打开图像 然后将其转换为 NumPy 数组 image Image open myimage png np image np asarray image 然后 我转置图像
  • Py2exe - Pmw WindowsError:[错误 3]

    我正在尝试使用 Py2exe 构建独立的可执行文件 我已经导入了 Pmw 类 当我运行独立可执行文件时 出现以下错误 Traceback most recent call last File py line 9 in
  • 在请求中设置端口

    我正在尝试利用cgminer使用 Python 的 API 我对利用requests图书馆 我了解如何做基本的事情requests but cgminer想要更具体一点 我想缩小 import socket import json sock
  • 将 window.location 传递给 Flask url_for

    我正在使用 python 在我的页面上 当匿名用户转到登录页面时 我想将一个变量传递到后端 以便它指示用户来自哪里 发送 URL 因此 当用户单击此锚链接时 a href Sign in a 我想发送用户当前所在页面的当前 URL
  • 通过 Python 循环浏览网络上的目录并显示其内容(文件和其他目录)

    同样的道理在Python中处理从源目录到目标目录的一组文件 https stackoverflow com questions 2593399 process a set of files from a source directory t
  • 类型错误:此 COM 对象无法自动执行 makepy 过程 - 请为此对象手动运行 makepy

    这是什么错误 回溯错误 C Users DELL PycharmProjects MyNew venv Scripts python exe C Users DELL PycharmProjects MyNew agaaaaain py T
  • Python 属性和 Swig

    我正在尝试使用 swig 为一些 C 代码创建 python 绑定 我似乎遇到了一个问题 试图从我拥有的一些访问器函数创建 python 属性 方法如下 class Player public void entity Entity enti
  • 如何按 pandas 中的值对系列进行分组?

    我现在有一只熊猫Series与数据类型Timestamp 我想按日期对其进行分组 并且每组中有许多行具有不同的时间 看似显而易见的方法类似于 grouped s groupby lambda x x date 然而 熊猫的groupby按索
  • Python 相当于 Scala 案例类

    Python 中是否有与 Scala 的 Case Class 等效的东西 就像自动生成分配给字段而无需编写样板的构造函数一样 当前执行此操作的现代方法 从 Python 3 7 开始 是使用数据类 https www python org
  • 没有名为“turtle”的模块

    我正在学习并尝试用Python3制作贪吃蛇游戏 我正在进口海龟 我正在使用 Linux mint 19 PyCharm python37 python3 tk Traceback most recent call last File hom
  • pandas.read_fwf 忽略提供的数据类型

    我正在从文本文件导入数据框 我想指定列的数据类型 但 pandas 似乎忽略了dtype input 一个工作示例 from io import StringIO import pandas as pd string USAF WBAN S
  • 使用 pandas 单元格中列表的长度选择行[重复]

    这个问题在这里已经有答案了 我有一张表 df a b c 1 x y x 2 x z c d 3 x t e f g 只是想知道如何使用 c 列的长度选择行 such as df loc len df c gt 1 我知道这是不对的 正确的
  • 在Python中停止ThreadPool中的进程

    我一直在尝试为控制某些硬件的库编写一个交互式包装器 用于 ipython 有些调用对 IO 的影响很大 因此并行执行任务是有意义的 使用 ThreadPool 几乎 效果很好 from multiprocessing pool import

随机推荐

  • 一文了解社区发现算法

    最近在调研社区发现图聚类在区域划分中的应用 将一些编辑汇总的信息记录如下 社团划分了解 社区是什么 在社交网络中 用户相当于每一个点 用户之间通过互相的关注关系构成了整个网络的结构 在这样的网络中 有的用户之间的连接较为紧密 有的用户之间的
  • 【会议资源】2022年第四届计算与人工智能国际研讨会(ISCAI 2022)

    2022年第四届计算与人工智能国际研讨会 ISCAI 2022 重要信息 会议网址 www iscai org 会议时间 2022年12月16 18日 召开地点 中国北京 截稿时间 2022年11月16日 录用通知 投稿后2周内 收录检索
  • Socket通信及文件操作

    java Socket通信及文件操作 编译软件 Eclipse 一 客户端 package com import java io BufferedReader import java io DataOutputStream import j
  • Mysql学习笔记-Mysql基础(基础看这篇就够了)

    数据库的基本概念 1 数据库的英文单词 DataBase 简称 DB 2 什么数据库 用于存储和管理数据的仓库 3 数据库的特点 1 持久化存储数据的 其实数据库就是一个文件系统 2 方便存储和管理数据 3 使用了统一的方式操作数据库 SQ
  • 【Linux】虚拟机免密登录

    以node1 node2为例 方法一 利用ssh keygen生成公钥和私钥 1 原理 在node1上生成公钥和私钥 之后将公钥复制到其他的虚拟机上 虚拟机通过匹配公钥则可以实现免密的操作 2 步骤 1 连接到node1 c ssh roo
  • Unknown CMake command "add_compile_definitions"

    Unknown CMake command add compile definitions 解决方法 换cmake 3 14
  • selenium自动化测试--126邮箱登录问题总结

    虫师著selenium 2自动化测试实战基于python语言第四章习题4 3 1 126邮箱登录练习问题总结 练习过程中 参考以下博友的博客顺利完成练习题 https blog csdn net cyjs1988 article detai
  • java.io.FileNotFoundException: xxx.txt (系统找不到指定的文件。) 的错误解决办法

    这是我报错的原来的代码 package day19 java2 import java io File import java io FileInputStream import java io IOException ClassName
  • saltstack+zabbix

    环境 server1 172 25 60 1 salt master salt minion zabbix server server2 172 25 60 2 salt minion zabbix agent 1 软件包安装过程存在许多依
  • 【小白笔记】——AD铺铜设置铜与焊盘、通孔的全连接

    目录 一 热焊盘与花焊盘的区别与比较 二 AD静态铺铜如何设置连接样式 一 热焊盘与花焊盘的区别与比较 来自百度百科 热焊盘 热焊盘指大面积的接地 电 中 常用元器件的腿与其连接 对连接腿的处理需要进行综合的考虑 就电气性能而言 元件腿的焊
  • 【数学建模】青少年犯罪问题

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 一 逐步回归分析法 1 1 逐步回归分析定义 最优回归方程 1 2 stepwise函数介绍 二 例题 青少年犯罪问题 2 1 题目简述 2 2 问题一建模与求解
  • 定制化UINavigationBar

    FirstViewController 定制化UINavigationBar void customNavigationBar 按钮被挡住 原因是 navigationbar的透明度默认为YES 先取出navigationbar UINav
  • java中countinue,.random(用于产生一个随机数)入门可看

    1 countinue 用在循环中 基于条件控制 跳过其次循环体内容的执行 继续下一次的执行 break 用在循环中 基于条件控制 终止循环体内容的执行 也就是结束当前的整个循环 eg public class zhou public st
  • php提取css生成单独文件,webapck将css 打包后单独提取到一个css文件中

    webpack4 提倡 一旦用了这个 不能使用style loader 以及css module 安装 npm install save dev mini css extract plugin rules rules test css us
  • SQLServer 中实现类似MySQL中的group_concat()函数的功能

    SQLServer中没有MySQL中的group concat函数 可以把分组的数据连接在一起 后在网上查找 找到了可以实现此功能的方法 特此记录下 SELECT a stuff SELECT b FROM tb WHERE a t a F
  • STM32 USB_SPI_FLASH 简易U盘设计

    这是大三下学期EDA实训的内容 设计制作了一个简易的U盘 主要涉及STM32单片机 W25Q128闪存芯片 电路板绘制 文件系统移植等内容 发布出来供大家参考 仅供学习交流使用 实验步骤仅供参考 转载请注明原文链接 https blog c
  • java数据传到前端页面_02 前端页面数据传递到后台java

    本文将阐述如何将前端页面数据传递到后台java代码 1 环境约束 win10 64位操作系统 idea2018 1 5 jdk 8u162 windows x64 spring4 2 4 前提约束 操作步骤 基本类型传输 RequestMa
  • Android使用AES加解密

    AES为对称加密 加解密用一套秘钥 秘钥自己随便定义 长度必须为16 或 32 个字符 1 AES工具类 AES 对称加密算法 加解密工具类 RequiresApi api Build VERSION CODES KITKAT public
  • getline()与get()

    1 getline getline 函数读取整行 通过换行符来确定输入结尾 然后丢弃换行符 1 作为istream中的类方法 char name 20 cin getline name 20 把一行读入到name数组中 这行字符不超过19个
  • python opencv 同窗口显示多个图像

    为了便于比对图像处理前后的效果 特别是算法处理前后的效果图 我们需要同时显示多张图片 这里采用opencv图像拼接的方法来实现我们想要的效果 1 定义函数show multi img 定义图片显示函数show multi img 共包括5参