【问题标题】:np.save doesn't save the whole arraynp.save 不保存整个数组
【发布时间】:2022-01-27 00:42:06
【问题描述】:

我正在接收来自rtsp 协议的流,分为numpy.ndarray 帧,我只是想将帧保存到image.npy,以便其他模块可以加载此图像。

我已经使用了np.savenp.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 出于某种原因没有保存整个数组。

  • 我尝试过但没有成功的方法:

    1. 我尝试在保存并加载 numpy 数组后添加一些延迟
    2. 检查服务器每次发送正确的数组

【问题讨论】:

  • 很难重现,但可能是您尝试加载 - 就在此刻 - 当您写入数组时?这两个 while 循环是否在两个单独的进程中运行?
  • 请完整回溯。这是load本身的错误,还是下面的一些操作?
  • @some_name.py,是的,它们在两个不同的进程上运行
  • @hpaulj,是的,这个错误在 np.load 本身
  • @MohamedMostafa 我认为这个错误发生在读写速度不同的时候。因此,当您在保存和加载后添加一些延迟时,numpy 数组在一定时间后不起作用。解决方案是:完成保存过程时添加标志“完成”。并且加载过程仅在标志为“完成”时执行。

标签: python arrays numpy


【解决方案1】:

我认为当写入和读取速度不同时会发生此错误。因此,当您在保存和加载后添加一些延迟时,numpy 数组在一定时间后不起作用。解决方案是:完成保存过程时添加标志“完成”。并且加载过程仅在标志为“完成”时执行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-30
    • 1970-01-01
    • 2021-03-06
    • 1970-01-01
    • 2020-07-27
    • 2011-04-26
    • 2015-09-24
    相关资源
    最近更新 更多