2008-09-11 7 views

Antwort

7

Das ImageKit-Framework in Leopard verfügt über eine IKPictureTaker-Klasse, mit der Sie das Standard-Bildblatt oder -Panel ausführen können, das Sie in iChat und anderen Anwendungen gesehen haben.

Wenn Sie nicht die standardmäßige Bildaufnahme/Panel-Schnittstelle verwenden möchten, verwenden Sie die QTKit Capture-Funktion, um ein Bild von der iSight zu erhalten.

Beides wird das Schreiben von Cocoa Code in Objective-C erfordern, aber das sollte heutzutage kein wirkliches Hindernis sein.

+0

Ich bin froh, einige Beispielcode zu sehen, wenn jemand das erreicht. Vielleicht direkt durch Ctypes? – meduz

1

Es gibt ein Dienstprogramm namens Isightcapture, das von der Unix-Befehlszeile ausgeführt wird, die ein Bild von der Isight-Kamera aufnimmt und speichert.

Sie können es auf dieser Website aus: http://www.macupdate.com/info.php/id/18598

Ein Beispiel dieses mit Applescript zu verwenden ist:

tell application "Terminal" tun Skript "/ Applications/isightcapture myimage.jpg" end tell

2

Wenn Sie die Kamera direkt aus Ihrem Code manipulieren möchten, müssen Sie die QuickTime Capture-APIs oder den Cocoa QTKit Capture Wrapper (viel besser) verwenden.

Der einzige Nachteil ist: Wenn Sie ein QTCaptureDecompressedVideoOutput verwenden, denken Sie daran, dass die Rückrufe nicht auf dem Haupt-Thread, sondern auf dem QuickTime-verwalteten Capture-Thread vorgenommen werden. Verwenden Sie [someObject performSelectorOnMainThread: ... withObject: ... waitUntilDone: NO], um Nachrichten an ein Objekt im Hauptthread zu senden.

1

Von einer verwandten Frage, die die Lösung ausdrücklich darum gebeten werden pythonic, sollten Sie einen Versuch zu motmot's camiface Bibliothek von Andrew Straw geben. Es funktioniert auch mit FireWire-Kameras, aber es funktioniert auch mit der Isight, die Sie suchen.

aus dem Tutorial:

import cv 
capture = cv.CaptureFromCAM(0) 
img = cv.QueryFrame(capture) 

Kann nicht tun Einfacher:

import motmot.cam_iface.cam_iface_ctypes as cam_iface 
import numpy as np 

mode_num = 0 
device_num = 0 
num_buffers = 32 

cam = cam_iface.Camera(device_num,num_buffers,mode_num) 
cam.start_camera() 
frame = np.asarray(cam.grab_next_frame_blocking()) 
print 'grabbed frame with shape %s'%(frame.shape,) 

Es wird in diesem sample neuroscience demo

Verwandte Themen