【Python】matplotlib.pyplot显示图片

1.figure语法及操作
(1)figure语法说明

figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)

num:图像编号或名称,数字为编号 ,字符串为名称
figsize:指定figure的宽和高,单位为英寸;
dpi:参数指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80      1英寸等于2.5cm,A4纸是 21*30cm的纸张 
facecolor:背景颜色
edgecolor:边框颜色
frameon:是否显示边框
例子:

import cv2
import matplotlit.pyplot as plt

def show_image(image):
    plt.figure(1)
    plt.axis("off") # off为不显示刻度,on为显示刻度,默认是on
    plt.imshow(image)
    plt.show()

image = cv2.imread("文件路径")
show_image(image) # image 类型是numpy.ndarray

(2)plt.subplots()函数返回一个figure图像和子图ax的array列表。

import cv2
import matplotlib.pyplot as plt

def show_two_images(image1, image2):
    fig, axes = plt.subplots(1, 2, figsize=(10, 10)) # 创建一个一行两列的画布,大小是figsize
    plt.axis("off")
    ax1 = axes[0] # 第一个子图
    ax2 = axes[1] # 第二个子图
    ax1.set_title("image")
    ax1.imshow(image1)
    ax1.set_title("ground truth")
    ax2.imshow(image2)
    plt.show()

image1 = cv2.imread("../img/02.jpg")
image2 = cv2.imread("../img/03.jpg")

show_two_images(image1, image2)

(3)使用plt.subplot()

import h5py
import cv2
import matplotlib.pyplot as plt
import numpy as np


def show(image1, image2, image3):
    plt.figure(figsize=(10, 5))
    plt.suptitle("") # 设置整个图片的标题    

    plt.subplot(1, 3, 1)
    plt.title('image1') # 设置小标题
    plt.axis('off')
    plt.imshow(image1)

    plt.subplot(1, 3, 2)
    plt.title('image2') # 设置小标题
    plt.axis('off')
    plt.imshow(image2)

    plt.subplot(1, 3, 3)
    plt.title('image3') # 设置小标题
    plt.axis('off')
    plt.imshow(image3)

    plt.show()

h5f = h5py.File(r'/root/data/lak/hhh/data/2018LA_Seg_Training_Set/45C45I6IXAFGNRO067W9/mri_norm2.h5', 'r')
image_index = 100
image = h5f['image'][image_index]
label = h5f['label'][image_index]

# 读取其他的图像可以用下边替换掉上边的
# image = cv2.imread('path')

grad_x, grad_y = np.gradient(image)

grad_x, grad_y = np.abs(grad_x), np.abs(grad_y)

grad = np.sqrt(grad_x ** 2 + grad_y ** 2)

grad_max = np.max(grad)

if grad_max != 0:
    grad = grad / grad_max
# print(grad_max)
show(image, label, grad)

在一行中显示任意多个图片,参数任意多个:

def show_image(*args):
    plt.figure(figsize=(10, 5))
    for idx, image in (args):
        plt.subplot(1, len(args), idx + 1)
        plt.axis("off")
        plt.imshow(image, cmap="gray")
    plt.show()

show_image(image1, image2, image3, ...)

记录matplotlib.pyplot显示图片,以后更多的用法再继续扩充。 >_<

你可能感兴趣的:(python知识积累,python,opencv,计算机视觉)