【CV】使用 matplotlib 画统计图,并用 OpenCV 显示静图和动图

这篇具有很好参考价值的文章主要介绍了【CV】使用 matplotlib 画统计图,并用 OpenCV 显示静图和动图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 效果

静图

【CV】使用 matplotlib 画统计图,并用 OpenCV 显示静图和动图,matplotlib,opencv,人工智能
动图
【CV】使用 matplotlib 画统计图,并用 OpenCV 显示静图和动图,matplotlib,opencv,人工智能

2.思路

  • 准备数据
  • 使用 pyplot 画统计图
  • 图片写入流,流转图(numpy)
  • matplotlib 颜色 RGB 转 OpenCV 颜色 BRG

4. 静图

代码过程有注释,很简单的实现。注意 matplotlib RGB 转 OpenCV BGR image = image[:, :, ::-1] ,否则颜色不一致。

#!/usr/bin/env python
# -*- encoding: utf-8 -*-

"""
@Create  :   2024/01/15 16:22:44
@Author  :   Yuan Mingzhuo
"""

import cv2
import numpy as np
import math
import random

# 统计图
import io
from PIL import Image
import matplotlib.pyplot as plt


# 尺寸: 960x480
plt.figure(figsize=(9.6, 4.8))


def draw_charts():
    """
    画图
    """
    # 数据
    values = [random.random() for i in range(150)]
    # 清空
    plt.clf()
    # 线条
    plt.plot(values, linewidth=1, color="deepskyblue")
    plt.axis((0, 200, 0, 1))
    plt.axhline(y=(sum(values) / len(values)), linewidth=1, color="r")
    # 图写入流
    buffer = io.BytesIO()
    plt.savefig(buffer)
    # 流转图片
    image = Image.open(buffer)
    image = np.asarray(image)
    image = image[:, :, :3]
    # matplotlib RGB 转 OpenCV BGR
    image = image[:, :, ::-1]
    cv2.imwrite("test.jpg", image)

if __name__ == "__main__":
    draw_charts()

5. 动图

思路,更新数据时,重新绘制统计图。

  • x 轴不变,数据集 values 保持 x 轴的数量即可,自行实现;
  • x 轴变化,数据集 values 的数量变化而变化;

【CV】使用 matplotlib 画统计图,并用 OpenCV 显示静图和动图,matplotlib,opencv,人工智能

代码过程有注释,很简单的实现。注意 matplotlib RGB 转 OpenCV BGR image = image[:, :, ::-1] ,否则颜色不一致。

#!/usr/bin/env python
# -*- encoding: utf-8 -*-

"""
@Create  :   2024/01/15 16:22:44
@Author  :   Yuan Mingzhuo
"""

import cv2
import numpy as np
import math
import random

# 统计图
import io
from PIL import Image
import matplotlib.pyplot as plt


# 尺寸: 960x480
plt.figure(figsize=(9.6, 4.8))


def draw_chart(values):
    """
    画图
    """
    buffer = io.BytesIO()
    # 清空
    plt.clf()
    plt.plot(values, linewidth=1, color="deepskyblue")
    axis_x = math.ceil(len(values) / 100) * 100
    plt.axis((0, axis_x, 0, 200))
    plt.axhline(y=(sum(values) / len(values)), linewidth=1, color="r")
    plt.savefig(buffer)
    # 获取图
    image = Image.open(buffer)
    image = np.asarray(image)
    image = image[:, :, :3]
    # matplotlib RGB 转 OpenCV BGR
    image = image[:, :, ::-1]
    # print(image.shape)
    # cv2.imwrite("test.jpg", image)
    return image

if __name__ == "__main__":
    # 数据
    values = []
    for i in range(1800):
        # 更新数据
        values.append(random.random() * 180)
        # 重新画图
        image = draw_chart(values)
        # 显示
        cv2.imshow("test", image)
        cv2.waitKey(100)

6. 多图

效果
【CV】使用 matplotlib 画统计图,并用 OpenCV 显示静图和动图,matplotlib,opencv,人工智能

代码

#!/usr/bin/env python
# -*- encoding: utf-8 -*-

"""
@Create  :   2024/01/15 16:22:44
@Author  :   Yuan Mingzhuo
"""

import cv2
import numpy as np
import math
import random

# 统计图
import io
from PIL import Image
import matplotlib.pyplot as plt


# 尺寸: 960x480
plt.figure(figsize=(9.6, 4.8))


def draw_charts():
    """
    画图
    """
    # 数据
    values_a = [random.random() for i in range(150)]
    values_b = [random.random() for i in range(150)]
    values = [values_a, values_b]
    # 清空
    plt.clf()
    # 线条
    for value in values:
        plt.plot(value, linewidth=1)
    # 坐标轴
    plt.axis((0, 200, 0, 1))
    # 辅助线
    plt.axhline(y=0.5, linewidth=1, color="r")
    # 图写入流
    buffer = io.BytesIO()
    plt.savefig(buffer)
    # 流转图片
    image = Image.open(buffer)
    image = np.asarray(image)
    image = image[:, :, :3]
    # matplotlib RGB 转 OpenCV BGR
    image = image[:, :, ::-1]
    cv2.imwrite("test.jpg", image)
  

if __name__ == "__main__":
    draw_charts()

7.应用

视觉计算时,可直接显示变化过程,减少先保存数据再绘制图的过程
【CV】使用 matplotlib 画统计图,并用 OpenCV 显示静图和动图,matplotlib,opencv,人工智能文章来源地址https://www.toymoban.com/news/detail-796650.html

到了这里,关于【CV】使用 matplotlib 画统计图,并用 OpenCV 显示静图和动图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用matplotlib绘制3D图表和统计地图

    目录 使用mplot3D绘制3D图表 mplot3d概述 绘制3D线框图(plot_wireframe()) 绘制3D曲面图(plot_surface()) 绘制3D条形图  绘制3D柱形图 np.meshgrid()函数的补充 使用animation制作动图 例子1  例子2 使用basemap绘制统计地图 实例:美国部分城镇人口分布(basemap) 实例1:三维空间的星星(3

    2024年02月04日
    浏览(34)
  • python读取excel数据并用双y轴绘制柱状图和折线图,柱子用渐变颜色填充

    往期python绘图合集: python绘制简单的折线图 python读取excel中数据并绘制多子图多组图在一张画布上 python绘制带误差棒的柱状图 python绘制多子图并单独显示 python读取excel数据并绘制多y轴图像 python绘制柱状图并美化|不同颜色填充柱子 python随机生成数据并用双y轴绘制两条带误差

    2024年02月10日
    浏览(36)
  • opencv中调整图像显示框大小,cv2.namedWindow()

    如果要要调整cv2.imshow显示出来的窗口大小, 需要使用 cv2.namedWindow(‘窗口标题’, 默认参数) 参数 cv2.imshow(‘窗口标题’,image),如果前面没有cv2.namedWindow,就自动先执行一个cv2.namedWindow() 窗口默认cv2.WINDOW_AUTOSIZE namedWindow函数的作用是通过指定的名字,创建一个可以作为图像和

    2024年02月16日
    浏览(28)
  • 解决opencv, cv2.puttext函数无法显示中文字符

    背景: opencv内置的cv2.puttext函数不能显示中文字符,尝试了下列方法: (1)cv2.freetype。没有这个库; (2)opencv无法导入中文字体库; (3)卸载opencv-python,安装opencv-python-headless, opencv- contrib-python 方法: 使用PIL库作为中转 下载中文字体库https://github.com/StellarCN/scp_zh/blob/master/fonts/S

    2024年02月13日
    浏览(33)
  • 解决VScode远程服务器时opencv和matplotlib无法直接显示图像的问题

    问题描述 :在VSCode中通过SSH连接服务器,使用cv2.imshow或plt.show()无法显示图像。 并且VScode与MobaXterm可以ssh到远程服务器 参数说明: 保持MobaXterm开启的状态下,在VSCode中运行xclock,会显示一个时钟。

    2024年02月14日
    浏览(31)
  • SSH通过VSCode远程访问服务器Opencv和matplotlib等无法直接显示图像问题

    需求描述: 在VSCode中通过SSH连接服务器,使用cv2.imshow或plt.show()无法显示图像。 解决思路如下: 1、首先查看与服务器之间的网络连接问题(百分之九十问题就是出在第一步骤,哈哈哈) 在本地端打开cmd,使用指令ping xxx.xxx.xxx.xxx,其中(xxx.xxx.xxx.xxx为服务器的IP地址) 在

    2024年02月15日
    浏览(36)
  • 使用ego1的xadc采集心电模块的输出并用vga显示

    最近刚做完学校的实验,记录一下自己的实验过程,也可以给需要的朋友一个参考,不对之处欢迎指正。 XADC:fpga内部IP核 XADC可以将0-1V的模拟电压信号转化为12位的数字电压信号,存储在DO[15:0]口的高12位上,转化速率为1MSPS的ADC(模数转换器)。 XADC中文全称应该是“Xilinx模

    2024年02月06日
    浏览(32)
  • Vscode使用matplotlib显示图像

    可以直接搜索用户设置 打勾操作 简单代码 运行之后可能显示文字 所以勾选文字左边的 “/” 选择更改演示文稿 选择image/png即可 最终效果如下:

    2024年02月04日
    浏览(31)
  • Python 数据可视化:玩转 Matplotlib 的散点图、线形图、饼图和热力图

    我们来探讨其他几种常用的数据可视化图形:散点图、线形图、饼图和热力图。 数据可视化图表是数据分析和演示的重要手段,它有以下优点: 快速理解信息 :通过图表,人们可以迅速捕捉到数据的主要模式和趋势,而不需要详细查看每个数据点。 增强记忆 :人们更容易

    2024年02月11日
    浏览(37)
  • 【Python数据可视化】matplotlib之绘制常用图形:折线图、柱状图(条形图)、饼图和直方图

    文章传送门 Python 数据可视化 matplotlib之绘制常用图形:折线图、柱状图(条形图)、饼图和直方图 matplotlib之设置坐标:添加坐标轴名字、设置坐标范围、设置主次刻度、坐标轴文字旋转并标出坐标值 matplotlib之增加图形内容:设置图例、设置中文标题、设置网格效果 matplo

    2024年01月16日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包