2016-05-31 14 views
1

Ich versuchte cv.SaveImage-Funktion, um es zu erreichen, aber ich bekam einen unerwarteten Fehler, der besagt, dass der Schreiber nicht gefunden wurde. Danke im Voraus. DieseKann jemand erklären, wie man RGB-Bild von kinect auf Raspberry Pi mit OpenCV speichert?

/* ist mein Beispielcode */

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) 
+0

Warum verwenden Sie 'cv' anstelle von' cv2'? Hast du 'cv2.imwrite()' versucht? –

+0

Ja, ich habe versucht, cv2.imwrite(), es hat nicht funktioniert. – MazeRunner09

Antwort

-1

Try cv.SaveImage('name',cv.Image); in cv.SaveImage('name.jpg',cv.Image); im display_rgb Methode zu ändern.

0

Mit cv2.imwrite ist es sehr einfach. Hier habe ich RGB- und Depth-Daten als Bilder im .png-Format gespeichert, aber Sie können es nach Belieben ändern.

Hoffe es hilft.

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