代码之家  ›  专栏  ›  技术社区  ›  P i

以30Hz的频率在屏幕上将动态变化的numpy数组实时渲染为位图

  •  0
  • P i  · 技术社区  · 3 年前

    以下是我一次性绘制存储为numpy数组的位图的代码:

    bitmapf = np.array((ypixels, xpixels, 3))  # RGB for last channel
    
    # ! bitmapf is populated
    
    renormed255 = 255.0 * bitmapf / np.max(bitmapf)
    
    # https://stackoverflow.com/questions/49271913/convert-numpy-array-to-rgb-image/49334548
    from PIL import Image
    
    img = Image.fromarray(renormed255.astype('uint8'), 'RGB')
    
    img.show()
    

    然而,我有来自填充bitmapf的websocket的实时数据。

    编辑:实时数据稀疏,并通过算法照亮位图上的像素。x轴是时间,每接收到大约20个数据包,只修改1 x像素Y列。

    我希望以30Hz的频率在屏幕上渲染它。

    如何实现这一点?(它很大,至少1024x768)。

    是否有可能进行优化,以便只将脏列传递给渲染器?

    更新: 我尝试过实现opencv方法,但它不会呈现:

    import cv2
    import numpy as np
    from time import sleep
    
    bitmap = np.zeros((512,512,3),np.uint8)
    
    for i in range(512):
        sleep(.1)
        bitmap[i,i,:] = 128
        cv2.imshow("Color Image", bitmap)
    
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    外部参照: Fast Live Plotting in Matplotlib / PyPlot

    0 回复  |  直到 3 年前