图像单幅或多幅展示(OPENCV-python)

news2024/11/26 14:27:08
# -*- coding: utf-8 -*-
import cv2

print("---------------------------------单幅图像读取-----------------------------")
# 打印opencv版本
print(cv2.version.opencv_version)
# 图像读取
img = cv2.imread('Figure_1.png')
if img is None:
    print('Image read error!')
else:
    # 图像显示
    cv2.imshow('open text', img)
    # 等待读者操作
    cv2.waitKey(0)
    # 窗口对象销毁
    cv2.destroyWindow('open text')

=====================================================

import cv2
import numpy as np
print("----------------------单幅图像读取并多幅显示在同一窗口---------------------")

转载这位博主的代码地址:python opencv 同窗口显示多个图像_opencv一个窗口显示多张图_Coding的叶子的博客-CSDN博客

def show_imgs_multi(scale, imglist, order=None, border=10, border_color=(255, 0, 255)):
    """
    :param scale: float 原图缩放尺寸
    :param imglist: list 待显示图像序列
    :param order: list or tuple 显示顺序 行*列
    :param border: int 图像间隔的距离
    :param border_color: 图像间隔颜色
    :return:
    """
    # step1:判断order是否为空
    if order is None:
        order = [1, len(imglist)]
    # step2:将imglist重新赋值给一个新的列表
    allimgs = imglist.copy()
    # step3: 创建两个新的列表存储图像集的宽和高
    ws, hs = [], []
    # step4:循环获取复制后的图像数量并改变图像维度及大小
    for i, img in enumerate(allimgs):
        if np.ndim(i) == 2:
            # 主要作用是将图像从一种颜色空间转换为另一种颜色空间,包括RGB、灰度、HSV等颜色空间,以满足不同应用领域的需求
            allimgs[i] = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
        # 主要作用是将待显示的图像重新调整宽和高,x轴,y轴
        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 sub:
            # np.zeros_like(a)的目的是构建一个与a同维度的数组,并初始化所有变量为零
            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('Figure_1.png')
    img = show_imgs_multi(0.9, [image, image, image, image, image, image], (2,3))
    cv2.namedWindow('multi', 0)
    cv2.imshow('multi', img)
    cv2.waitKey(0)

===============================================================

import cv2
import os
import numpy as np

print("---------------------------------图像读取全部显示-----------------------------")
path = 'C:/Users/HASEE/Desktop/IMS/'
# res = cv2.imreadmulti(filename=path, mats=list, flags='IMREAD_COLOR(1)')
# 读取path文件夹下所有的名字
imglist = os.listdir(path)
print(imglist)
for img in imglist:
    if img.endswith('.jpg'):
        image = cv2.imread(path+img)
        cv2.imshow('pic', image)
        cv2.waitKey(2000)
cv2.destroyAllWindows()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/858984.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

保姆级Arcgis安装图文安装教程

参考视频&#xff1a;【钟老师arcGIS从放弃到入门】02软件下载与安装_哔哩哔哩_bilibili 安装包在视频简介中有 注释&#xff1a;安装过程中有犯错误&#xff0c;请耐心看完一遍再跟着操作 &#xff08;一&#xff09;安装包下载 下载视频中分享的压缩包(压缩包密码&#x…

【UE4 RTS】07-Camera Boundaries

前言 本篇实现的效果是当CameraPawn移动到地图边缘时会被阻挡。 效果 步骤 1. 打开项目设置&#xff0c;在“引擎-碰撞”中&#xff0c;点击“新建Object通道” 新建通道命名为“MapBoundaries”&#xff0c;然后点击接受 2. 向视口中添加 阻挡体积 调整阻挡体积的缩放 向四…

【巧妙继承】C++玩转继承的神级技巧

本篇目录 什么是继承&#xff1f;继承的格式继承关系和访问限定符继承父类成员访问方式的变化基类和派生类对象赋值转换继承中的作用域派生类的默认成员函数构造函数拷贝构造赋值重载析构函数 继承与友元继承与静态成员多继承与菱形继承虚拟继承菱形虚拟继承的实现原理 继承和组…

DPMFoam给粒子添加周期性边界条件

问题引入 DPMFoam是OpenFOAM中的一个颗粒两相流求解器&#xff0c;在流体的运算中&#xff0c;我们经常采用周期性边界条件&#xff0c;在OpenFOAM中即为cyclic&#xff0c;那么对于颗粒&#xff0c;能否在边界也设置成周期性边界呢&#xff0c;在CFDEM中是可以的&#xff0c;…

使用C#加载TOOLBLOCK

前言 因为Vpp文件类型包含了以下三种 QuickBuidJobToolBlock 不同类型的打开方式不同&#xff0c;需要提前知道vpp是什么类型 例如 这个TB.vpp文件是TOOLBLOCK&#xff0c;就不能直接在visionpro中打开&#xff08;直接打开需要QuickBuid文件&#xff09;&#xff0c; 可以…

明道云联合EMQ基于IIoT场景技术白皮书

背景介绍 智能物联网设备在IIoT场景中有着广泛的应用&#xff0c;但如何管理和监控这些设备是一个挑战。为了解决这个问题&#xff0c;用户首先需要采集各项设备基础数据&#xff0c;然后在此基础上通过业务系统管理设备。 EMQ作为数据链接底座&#xff0c;可提供高可靠、高性…

ROS入门-第 1 章 ROS概述与环境搭建

目录 第 1 章 ROS概述与环境搭建 1.1 ROS简介 1.1.1 ROS概念 1.1.2 ROS设计目标 1.1.3 ROS发展历程 1.3 ROS快速体验 1.3.1 HelloWorld实现简介 1.3.2 HelloWorld&#xff08;C版&#xff09; 步骤 1&#xff1a;创建工作空间 步骤 2&#xff1a;创建发布者节点 步骤…

python——案例16:约瑟夫生者死者链队列

约瑟夫游戏的大意是&#xff1a;一条船上有30个人&#xff0c;因为在海上遇到风暴 因此船长告诉乘客&#xff0c;必须牺牲15个人&#xff0c;并议定30个人围成一圈&#xff0c; 由第一个人数起&#xff0c;依次报数&#xff0c;数到第9人&#xff0c;便把他投入大海中&#xff…

Multimap用法详解

Multimap Multimap 是 Google 的 Guava 库为 Java 引入的一种新集合类型&#xff0c;它允许将多个值存储在单个键下。它被设计为一种替代 Map<K, List> 或 Map<K, Set>&#xff08;JDK 标准集合框架&#xff09;的方案。 Multimap<K, V> 扩展了 AbstractMul…

性能测试基础了解

什么是线程&#xff1f; 线程是程序中的一个执行流&#xff0c;每个线程都有自己的专有寄存器(栈指针、程序计数器等)&#xff0c;但代码区是共享的&#xff0c;即不同的线程可以执行同样的函数。 一般在性能测试过程中&#xff0c;我们认为一个线程就是一个虚拟用户。 什么…

【CSS】背景图定位问题适配不同机型

需求 如图, 实现一个带有飘带的渐变背景 其中头像必须显示飘带凹下去那里 , 需要适配不同的机型, 一不下心容易错位 实现 因为飘带背景是版本迭代中更新的, 所以飘带和渐变背景实则两个div 飘带切图如下 , 圆形部分需要契合头像 <view class"box-bg"><…

json-server的入门

由于前端开发的时候&#xff0c;需要向后端请求数据&#xff0c;有的时候后端还没有准备好&#xff0c;所以需要使用一些简单的静态数据&#xff0c;但是我们更加希望能够模拟请求以及请求回来的过程&#xff0c;这个时候就需要使用json-server Json-Server的介绍 json-server…

从小白到大神之路之学习运维第77天-------Kubernetes集群部署下篇

第四阶段 时 间&#xff1a;2023年8月10日 参加人&#xff1a;全班人员 内 容&#xff1a; Kubernetes集群部署下篇 目录 一、安装flannel 二、安装Dashboard UI &#xff08;一&#xff09;部署Dashboard &#xff08;二&#xff09;开放端口设置 &#xff08;三&a…

课程管理系统springboot学生教师教务java jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 课程管理系统springboot 软件架构&#xff1a;Spring…

无涯教程-Perl - keys函数

描述 此函数以列表形式返回哈希的所有键。键以随机顺序返回,但实际上,它们与值和每个值使用相同的顺序。 语法 以下是此函数的简单语法- keys HASH返回值 此函数在标量context中返回哈希中的键数,在列表context中返回键列表。 例 以下是显示其基本用法的示例代码- #!/u…

【uniapp】 软键盘弹出后fixed定位被顶上去问题

问题描述 当手机设计的导航栏为fixed定位上去时&#xff0c;输入框获取焦点就会把顶部自定义的导航栏顶到上面去&#xff0c;如下图所示 解决办法 输入框设置 :adjust-position“false” <input type"text" :adjust-position"false" focus"i…

APP稳定性测试神器之Monkey-随机事件测试

一、Monkey 命令基本参数介绍 0、–help : 列出简单的用法 adb shell monkey -help 1、允许启动手机里面所有的 App &#xff0c; 随机操作 1000 次 adb shell monkey 1000 2、-p : 允许启动 App 的包名 启动一个包名的应用&#xff0c;QQ 的包名为&#xff1a; com.tenc…

vscode的ros拓展(插件)无法渲染urdf

文章目录 事件背景资料调查解决方案 事件背景 之前在vscode中一直用得好好的urdf预览功能&#xff0c;突然在某一天&#xff0c;不行了。 执行 URDF Preview之后&#xff0c;虽然弹出了一个URDF Preview的窗口&#xff0c;但是这个窗口里面啥都没有。没有网格、没有模型。 一开…

组合搜索组件文档

ifeng 组合搜索组件文档 组合搜索组件 1. 先展示一下使用效果: 2. 使用方法 第一步: 在views.py中配置和传参 search_group NbSearchGroup(request,models.TransactionRecord, # 传入表Option(charge_type), # 传入choice字段名 )第二步: 添加查询条件 # 查询条件 .fi…

《兴森大求真》重磅来袭!先进电子电路可靠性大揭秘

兴森实验室&#xff0c;让可靠看得见 前言介绍 芯片性能不断增强、先进封装不断演进&#xff0c;导致封装基板信号互连的IO数量和密度不断增加、PCB的层数增加、孔间距减小、厚径比提升&#xff0c;可靠性的挑战正在加剧。 电路板作为各种电子元器件的载体和电路信号传输的枢…