Beispielcode für die Verwendung einer Mac-Kamera in einem Programm?
-
09-06-2019 - |
Frage
Ich möchte die Kamera in meinem Macbook in einem Programm verwenden.Ich bin ziemlich sprachunabhängig – C, Java, Python usw. sind alle in Ordnung.Könnte jemand den besten Ort vorschlagen, um nach Dokumenten oder Code vom Typ „Hallo Welt“ zu suchen?
Lösung
Der ImageKit Rahmen in Leopard hat eine IKPictureTaker
Klasse, die Sie laufen läßt das Standard-Bildaufnahmeblatt oder Platte, die Sie in iChat und anderen Anwendungen gesehen.
Wenn Sie nicht möchten, dass die Standard-Bildfängerplatte / Blatt-Schnittstelle verwenden, können Sie eine Verwendung der QTKit Capture- Funktionalität ein Bild von der iSight zu erhalten.
Beide erfordern einen Cocoa-Code in Objective-C zu schreiben, aber das sollte in diesen Tagen nicht wirklich ein Hindernis sein.
Andere Tipps
Wenn Sie die Kamera direkt aus dem Code manipulieren wollen, müssen Sie die Quicktime-Capture-APIs verwenden, oder die Cocoa QTKit erfassen Wrapper (viel besser).
Die einzige Einschränkung ist: Wenn Sie einen QTCaptureDecompressedVideoOutput verwenden, denken Sie daran, dass die Rückrufe auf dem Haupt-Thread nicht vorgenommen werden, sondern auf dem Quicktime-Managed-Capture-Thread. Verwenden Sie [someobject performSelectorOnMainThread: ... withobject: ... waitUntilDone: NO]. Nachrichten an ein Objekt auf dem Haupt-Thread senden
Es gibt ein Programm namens isightcapture, die aus der Unix-Kommandozeile ausgeführt wird, die ein Bild von der iSight Kamera nimmt und speichert es.
Sie können es auf dieser Website finden Sie unter: http: //www.macupdate .com / info.php / id / 18598
Ein Beispiel für die Verwendung dieses mit Applescript ist:
tell application "Terminal" do script "/ Applications / isightcapture myimage.jpg" Ende tell
Von einer verwandten Frage, die speziell auf die Lösung gefragt sein pythonic, sollten Sie einen Versuch geben, um zu motmot des camiface rel="nofollow Bibliothek von Andrew Straw. Es funktioniert auch mit Firewire-Kameras, aber es funktioniert auch mit der iSight, das ist das, was Sie suchen.
Aus dem Tutorial:
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 Beispiel Neurowissenschaften Demo
Quartz Composer sind auch eine angenehme Art und Weise mit Video zu erfassen und zu arbeiten, wenn es anwendbar ist. Es gibt ein Video Input Patch.
Quartz Composer ist eine visuelle Programmierumgebung, die in einem größeren Cocoa-Programm integriert wenn es sein muss.
http://developer.apple.com/graphicsimaging/quartz/quartzcomposer.html
Eine andere Lösung ist OpenCV + Python mit einem Skript wie:
import cv
capture = cv.CaptureFromCAM(0)
img = cv.QueryFrame(capture)
Kann nicht tun Einfacher!