0

我有来自套接字的数据。我想一开始创建一个空图像,然后每次从套接字接收数据时更新这个图像。问题是当我收到大量数据(1024)并且我想显示它时,它需要时间并且挂起。有没有可能稍微加快速度?我认为我这样做的方式是问题所在,所以如果有人知道更好的方法,请提出建议。

这就是我正在做的事情:

    for i in range(0,99): 
        self.image_array[i] = np.zeros(shape=(y,x))  # y lines, x = points

    #values are the received array 
    self.image_array[ch_id][line] = self.values  from socket

    ax1.imshow(self.image_array[ch_id],cmap='gray',interpolation='nearest',
            origin='lower')

    plt.draw()
    plt.clf()

当我收到数据时,是否有可能不是替换数据,而是追加数据?有没有更好的方法来初始化数组而不是np.zeros(...

4

1 回答 1

1

每次新数据从套接字到达时,都不需要创建新图像。您可以在初始化时创建单个图像,然后根据您收到的数据更新数组中的值:

  # on initialisation
  self.im = imshow(np.zeros((x,y)),cmap='gray',interpolation='nearest',
        origin='lower')
  ...

  # on update
  self.im.set_data(self.values)
  self.im.set_clim(self.values.min(),self.values.max())
  self.im.figure.canvas.draw()
于 2013-07-11T10:51:02.633 回答