我和我的同事使用这个(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脚本)
答案 0 :(得分:0)
根据the API documentation of cv2.resize,你的640x480矩阵是根据你传入的数据矩阵中的任何数字进行插值的。除非你需要将原始的80x60数据“炸成”某种特定的格式,否则你应该能够跳过这一行/步骤而不会丢失信息。