微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

这是我一次性绘制存储为 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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。