cv2.resize究竟做了什么?

时间:2017-02-23 13:08:48

标签: python matlab cv2

我和我的同事使用这个(python)脚本从热像仪导入数据:

      try:
    while True:
      data = q.get(True, 500)
      if data is None:
        break
         data = cv2.resize(data[:,:], (80, 60))
#          f.write(data)
      minVal, maxVal, minLoc, maxLoc = cv2.minMaxLoc(data)

#          img = raw_to_8bit(data)
      np.savetxt("uvc-capture-file.txt",np.array(data))
#         f.write(" ")
      display_temperature(img, minVal, minLoc, (255, 0, 0))
      display_temperature(img, maxVal, maxLoc, (0, 0, 255))
      cv2.imshow('Lepton 2.5 Radiometry', img)
      cv2.waitKey(1)

    cv2.destroyAllWindows()
  finally:
    libuvc.uvc_stop_streaming(devh)
    f.close()
  print "done"
finally:
  libuvc.uvc_unref_device(dev)
finally:
libuvc.uvc_exit(ctx)

if __name__ == '__main__':
 main()

一切正常,但在“data = cv2.resize(data [:,:],(80,60))”行中,我们将调整大小从640,480更改。我们不确定脚本原来是为什么那,但是当我们运行它时,它给了我们一个漂亮的文本文档,矩阵中有640x480个数字。当我们将它插入Matlab时,我们仍然可以使用它。唯一的问题是热传感器仅从80x60区域收集数据。从哪里获得“填充”数字?该脚本与80x60的工作方式相同,但它没有给我们一个带有640x480数字矩阵的文本文档,而是给了我们一个80x60的文本。知道为什么吗?

(抱歉诅咒的python脚本)

1 个答案:

答案 0 :(得分:0)

根据the API documentation of cv2.resize,你的640x480矩阵是根据你传入的数据矩阵中的任何数字进行插值的。除非你需要将原始的80x60数据“炸成”某种特定的格式,否则你应该能够跳过这一行/步骤而不会丢失信息。