加速在matplotlib中绘制图像

9 浏览
0 Comments

加速在matplotlib中绘制图像

我在Spyder IDE中编写了一些Python代码,以便将一对图像并排绘制出来,以便我可以进行目视检查。大部分时间我只需要3秒钟来查看它们,但偶尔我需要更长的时间进行仔细观察。因此,我没有使用time.sleep,而是编写了以下代码,让它在我按下回车键后等待:

import matplotlib.pyplot as plt
import os
def VI_segmentation():
    root = os.getcwd()
    NR_dir = root + '\\Neurite_Results\\'
    SO_dir = root + '\\Segmentation_Overlays\\'
    jpgs = os.listdir(NR_dir)
    fig = plt.figure(figsize=(20,12))
    for jpg in jpgs:
        fig.suptitle(jpg , fontsize=14, fontweight='bold')
        image_NR = plt.imread(NR_dir + jpg)
        image_SO = plt.imread(SO_dir + jpg)
        plt.subplot(121)
        plt.imshow(image_NR)
        plt.subplot(122)
        plt.imshow(image_SO)
        plt.draw()
        plt.pause(0.01)
        input('按回车键继续')
VI_segmentation()

问题是,我思考的速度比我的计算机快:). 计算机需要5或6秒钟才能对回车键做出响应,并且在响应后还需要几秒钟进行更新。当处理大量基本上都没问题的图像时,这样的人机工程学效果很差。如果有任何简化这段代码的想法,将不胜感激。

0
0 Comments

问题的出现原因:问题是由于每次更新绘图时重新绘制而导致的绘图速度变慢。

解决方法:改变绘图中的数据而不是重新绘制,可以解决绘图速度变慢的问题。需要改变的代码如下所示:

im1.set_data(image_NR)
im2.set_data(image_SO)
f.canvas.draw()

文章整理如下:

这个问题的解决方法如下所示:

import matplotlib.pyplot as plt
import os
def VI_segmentation():
    plt.ion()
    root = os.getcwd()
    NR_dir = root + '\\Neurite_Results\\'
    SO_dir = root + '\\Segmentation_Overlays\\'
    jpgs = os.listdir(NR_dir)
    f = plt.figure(figsize=(22,12))
    ax1 = f.add_subplot(121)
    ax2 = f.add_subplot(122)
    image_NR = plt.imread(NR_dir + jpgs[0])
    image_SO = plt.imread(SO_dir + jpgs[0])
    im1 = ax1.imshow(image_NR)
    im2 = ax2.imshow(image_SO) 
    f.suptitle(jpgs[0] , fontsize=14, fontweight='bold')
    f.show()
    plt.pause(0.01)
    input('Press Enter to continue')
    
    for jpg in jpgs[1:]:
        f.suptitle(jpg , fontsize=14, fontweight='bold')
        image_NR = plt.imread(NR_dir + jpg)
        image_SO = plt.imread(SO_dir + jpg)
        im1.set_data(image_NR)
        im2.set_data(image_SO)
        f.canvas.draw()
        plt.pause(0.01)
        input('Press Enter to continue')
VI_segmentation()

原文链接:Why does my pylab animation slow down with each update?

奇怪的是,当我开始改变绘图数据而不是重新绘制时,我开始遇到了一些奇怪的问题,即图形会变大,但周围的窗口大小不变。为了解决这个问题,我重新调整了创建图形和轴的顺序,这样在创建图形时就可以设置图形的大小。

0
0 Comments

问题:如何加快在matplotlib中绘制图像的速度?

原因:绘制大量图像时,matplotlib的默认后端可能会导致绘图速度较慢。

解决方法:更改matplotlib的后端以提高绘图速度。

解决方法一:尝试使用GTKAgg后端,步骤如下:

1. 在matplotlib的导入语句后,添加以下代码:

import matplotlib
matplotlib.use('GTKAgg')

2. 运行程序,查看绘图速度是否有所改善。

解决方法二:尝试其他可用的后端,步骤如下:

1. 参考链接http://matplotlib.org/faq/usage_faq.html#what-is-a-backend,了解可用的后端。

2. 根据需求,尝试使用其他后端,查看绘图速度是否有所改善。

通过更改matplotlib的后端,可以加快在matplotlib中绘制图像的速度。可以尝试使用GTKAgg后端或其他可用的后端,找到最适合的后端来提高绘图速度。

0