簡體   English   中英

誰能解釋如何使用OpenCV在Raspberry Pi上從kinect保存RGB圖像?

[英]Could anyone explain how to save RGB image from kinect on Raspberry Pi using OpenCV?

我嘗試使用cv.SaveImage函數來完成此操作,但是卻遇到了一些意外錯誤,指出找不到作者。 提前致謝。

/ *這是我的示例代碼* /

import freenect    
import cv   
import frame_convert   
import time   
import cv2   
import numpy as np   

cv.NamedWindow('Depth')
cv.NamedWindow('RGB')
keep_running = True

def display_depth(dev, data, timestamp):   
    global keep_running   
    cv.ShowImage('Depth', frame_convert.pretty_depth_cv(data))  
    #time.sleep(1)   
    if cv.WaitKey(10) == 27:  
       keep_running = False   


def display_rgb(dev, data, timestamp):  
    global keep_running  
    cv.Image= frame_convert.video_cv(data)   
    img = cv.CreateImage(cv.GetSize(cv.Image), cv.IPL_DEPTH_16S, 3)   
    cv.ShowImage('RGB',cv.Image)   
    for x in range(1,5):   
     name= "img%d" %(x)   
     cv.SaveImage('name',cv.Image);   
     time.sleep(1)   
    if cv.WaitKey(10) == 27:   
        keep_running = False   

def body(*args):   
    if not keep_running:    
        raise freenect.Kill   

print('Streaming from Kinnect... Please wait...Press ESC in window to stop') 
freenect.runloop(depth=display_depth,
                 video=display_rgb,
                 body=body)

使用cv2.imwrite非常容易。 在這里,我已將RGB和深度數據保存為.png格式的圖像,但是您可以將其更改為所需的任何格式。

希望能幫助到你。

#import the necessary modules

import freenect
import cv2
import numpy as np

#function to get RGB image from kinect
def get_video():
    array,_ = freenect.sync_get_video()
    array = cv2.cvtColor(array,cv2.COLOR_RGB2BGR)
    return array

#function to get depth image from kinect
def get_depth():
    array,_ = freenect.sync_get_depth()
    array = array.astype(np.uint8)
    return array

if __name__ == "__main__":
    i = 0
    while 1:
        #get a frame from RGB camera
        frame = get_video()
        #get a frame from depth sensor
        depth = get_depth()
        #display RGB image
        cv2.imshow('RGB image',frame)
        #display depth image
        cv2.imshow('Depth image',depth)
        k = cv2.waitKey(5) & 0xFF
        if k == 27:         # wait for ESC key to exit
            cv2.destroyAllWindows()
        elif k == ord('s'): # wait for 's' key to save and exit
            cv2.imwrite('frame'+str(i)+'.png',frame)
            cv2.imwrite('depth'+str(i)+'.png',depth)
            i = i+1
    cv2.destroyAllWindows()

嘗試更改cv.SaveImage('name',cv.Image); 進入cv.SaveImage('name.jpg',cv.Image); 在display_rgb方法中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM