【发布时间】:2022-01-27 00:42:06
【问题描述】:
我正在接收来自rtsp 协议的流,分为numpy.ndarray 帧,我只是想将帧保存到image.npy,以便其他模块可以加载此图像。
我已经使用了np.save 和np.load,如这个 sn-p 所示:
- 发件人:
while True:
frame = rtsp_module.get_next_frame()
print(type(frame), frame.shape)
# <class 'numpy.ndarray'> (1080, 1920, 3)
np.save("image.npy", frame)
- 接收者:
while True:
frame = np.load("image.npy")
print(type(frame), frame.shape)
对于前几帧它工作正常,但在一个随机帧我得到这个错误:
ValueError: cannot reshape array of size 6,217,425 into shape (1080,1920,3).
所以我假设 numpy.save 出于某种原因没有保存整个数组。
-
我尝试过但没有成功的方法:
- 我尝试在保存并加载 numpy 数组后添加一些延迟
- 检查服务器每次发送正确的数组
【问题讨论】:
-
很难重现,但可能是您尝试加载 - 就在此刻 - 当您写入数组时?这两个 while 循环是否在两个单独的进程中运行?
-
请完整回溯。这是
load本身的错误,还是下面的一些操作? -
@some_name.py,是的,它们在两个不同的进程上运行
-
@hpaulj,是的,这个错误在
np.load本身 -
@MohamedMostafa 我认为这个错误发生在读写速度不同的时候。因此,当您在保存和加载后添加一些延迟时,numpy 数组在一定时间后不起作用。解决方案是:完成保存过程时添加标志“完成”。并且加载过程仅在标志为“完成”时执行。