2008-08-12 16 views
7

¿Es posible acceder a la cámara iSight en un macbook programáticamente? Con esto quiero decir que me gustaría poder tomar cuadros fijos de la cámara iSight en el comando y luego hacer algo con ellos. Si es así, ¿solo se puede acceder usando el objetivo c, o podrían usarse otros idiomas también?¿Tiene acceso a iSight mediante programación?

Respuesta

4

que no tienen un Mac aquí, pero hay algo de documentación aquí:

http://developer.apple.com/documentation/Hardware/Conceptual/iSightProgGuide/01introduction/chapter_1_section_1.html

Parece que usted tiene que ir a través de la API de QuickTime. Se supone que debe haber un Proyecto de ejemplo llamado "MungGrab" que podría valer la pena según this thread.

+2

página hi ... Me estoy haciendo que no se encuentra para el enlace developer.apple.com la que usted sugiere ... que se puede actualizar? – Devarshi

+1

Este enlace todavía está dando un error 404. ¿Puede actualizar el enlace o mejor aún mejorar la respuesta para que no confíe en el enlace? – ChrisF

0

Además de ObjC, puede usar los enlaces PyObjC o RubyCocoa para acceder también. Si no eres exigente con el idioma, diría que utilizas Ruby, ya que PyObjC está horriblemente mal documentado (incluso la página oficial de Apple se refiere a la versión anterior, no la que viene con OS X Leopard)

Quartz Composer es probablemente la forma más fácil de acceder a él, y los archivos .quartz se pueden incrustar en aplicaciones con bastante facilidad (y los datos enviados a ObjC o similar)

Además, supongo que debería haber un ejemplo o dos de esto en el/Developer/Examples/

1

Hay una utilidad de línea de comandos llamada isightcapture que hace más o menos lo que quiere hacer. Probablemente puedas obtener el código del desarrollador (su dirección de correo electrónico está en el archivo Léame que obtienes cuando descargas la utilidad).

9

Debe retirar la QTKit Capture documentation.

en Leopard, puede llegar a todos de la misma sobre el puente RubyCocoa:

require 'osx/cocoa' 
OSX.require_framework("/System/Library/Frameworks/QTKit.framework") 

OSX::QTCaptureDevice.inputDevices.each do |device| 
    puts device.localizedDisplayName 
end 
1

Una cosa que no se ha mencionado hasta ahora es el IKPictureTaker, que es parte del Kit de imágenes. Sin embargo, esto proporcionará el panel proporcionado por el sistema operativo estándar para tomar fotografías, con todas las funciones de filtro posibles, etc. incluidas. No estoy seguro si eso es lo que quieres.

Supongo que puede usarlo también en otros idiomas, teniendo en cuenta que hay cosas como cocoa bridges pero no tengo experiencia con ellas.

Googling también apareció con another question on stackoverflow que parece solucionar este problema.

0

De una pregunta relacionada que pidió específicamente que la solución fuera pitónica, debe probarla en la biblioteca motmot's camiface de Andrew Straw. También funciona con cámaras firewire, pero también funciona con isight, que es lo que estás buscando.

Desde el 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,) 
Cuestiones relacionadas