2017-02-23 68 views
0

我的同事和我是從一個熱成像攝像機採用這種(蟒蛇)導入數據的腳本:cv2.resize究竟做了什麼?

 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() 

一切正常,但在該行「數據= cv2.resize(數據[:,:],(80 ,60))「我們改變了640,480的大小。我們不確定爲什麼腳本原來是這樣的,但是當我們運行它時,它給了我們一個很好的文本文檔,矩陣中有640x480的數字。當我們將它插入Matlab時,我們仍然能夠運行它。唯一的問題是熱傳感器只收集來自80x60區域的數據。它從哪裏獲得「填充」數字?該腳本與80x60的工作方式相同,但不是給我們提供一個640x480數字矩陣的文本文檔,它給了我們一個80x60的文檔。任何想法爲什麼?

(很抱歉的屠殺python腳本)

回答

0

the API documentation of cv2.resize,你的640×480矩陣被從數據矩陣中的任何數字都可以插在你調用,除非你需要你原來的80x60數據「炸燬」到一些特定的格式,你應該能夠跳過這一行/步驟而不會丟失任何信息。