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

# -*- 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 os

path = 'Differ-classifies.png'
# os.listdir(path)
img = cv2.imread(filename=path)
if img is None:
    print("Image read error!")
else:
    stc = cv2.imwrite("open-write.jpg", img)
    if stc:
        print("Image wirte success!")

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

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()

图像单幅或多幅展示(OPENCV-python)_第1张图片

图像单幅或多幅展示(OPENCV-python)_第2张图片

你可能感兴趣的:(opencv,python)