将matpoltlib绘制好的图片从内存中取出

本文演示了如何使用Matplotlib创建条形图,并通过OpenCV和PIL将图表转换为图像文件。代码中详细展示了从生成随机数据、创建图表到保存为图像的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import matplotlib.pyplot as plt
import numpy as np
import io
from PIL import Image
import cv2
    fig = plt.figure("Image", frameon=False)# 图像窗口名称
    canvas = fig.canvas#关键
    name_list = ['0', "1", "2", "3", "4", "5", "6"]
    num_list = [round(random.random() * 100, 2), round(random.random() * 100, 2), round(random.random() * 100, 2),
                round(random.random() * 100, 2), round(random.random() * 100, 2), round(random.random() * 100, 2),
                round(random.random() * 100, 2)]
    rects = plt.bar(range(len(num_list)), num_list, color='rgby')
    index = [0, 1, 2, 3, 4, 5, 6]
    index = [float(c) for c in index]
    plt.ylim(ymax=110, ymin=0)
    plt.xticks(index, name_list)
    plt.ylabel("arrucay(%)")  # X轴标签
    for rect in rects:
        height = rect.get_height()
        plt.text(rect.get_x() + rect.get_width() / 2, height, str(height) + '%', ha='center', va='bottom')
  
  
  #关键
    buffer = io.BytesIO()# 获取输入输出流对象
    canvas.print_png(buffer)# 将画布上的内容打印到输入输出流对象
    data = buffer.getvalue()# 获取流的值
    # print("plt的二进制流为:\n", data)
    buffer.write(data)# 将数据写入buffer
    img = Image.open(buffer)# 使用Image打开图片数据
    img = np.asarray(img)
    print("转换的图片array的尺寸为:\n", img.shape)
    # print("转换的图片array为:\n", img)
    cv2.imwrite("02.jpg", img)
    buffer.close()

其中标注为关键字样的地方最为重要

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东方佑

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值