¿Código de muestra para usar la cámara Mac en un programa?
-
09-06-2019 - |
Pregunta
Me gustaría usar la cámara de mi Macbook en un programa.Soy bastante independiente del lenguaje: C, Java, Python, etc. están bien.¿Alguien podría sugerir el mejor lugar para buscar documentos o códigos tipo "Hola mundo"?
Solución
El marco ImageKit en Leopard tiene una IKPictureTaker
clase que le permitirá ejecutar la hoja o panel estándar para tomar fotografías que vio en iChat y otras aplicaciones.
Si no desea utilizar la interfaz estándar de panel/hoja para tomar fotografías, puede utilizar el Captura QTKit funcionalidad para obtener una imagen de iSight.
Ambos requerirán escribir algo de código Cocoa en Objective-C, pero eso no debería ser un obstáculo en estos días.
Otros consejos
Si desea manipular la cámara directamente desde su código, debe usar las API de QuickTime Capture o la Captura de QTKit de cacao envoltorio (mucho mejor).
La única advertencia es:Si usa QTCaptureDecompressedVideoOutput, recuerde que las devoluciones de llamada no se realizan en el hilo principal, sino en el hilo de captura administrado por QuickTIme.Utilice [someObject performSelectorOnMainThread:...conObjeto:...waitUntilDone:NO] para enviar mensajes a un objeto en el hilo principal.
Hay una utilidad llamada isightcapture que se ejecuta desde la línea de comando de Unix y toma una fotografía de la cámara isight y la guarda.
Puedes consultarlo en este sitio web: http://www.macupdate.com/info.php/id/18598
Un ejemplo de uso de esto con AppleScript es:
decir aplicación "terminal" do script "/aplicaciones/isightCapture myImage.jpg" Fin
A partir de una pregunta relacionada que pedía específicamente que la solución fuera pitónica, debería intentarlo camisola de momoto biblioteca de Andrew Straw.También funciona con cámaras firewire, pero también funciona con isight, que es lo que buscas.
Del 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,)
Se utiliza en este muestra de demostración de neurociencia
Quartz Composer también es una forma agradable de capturar y trabajar con vídeo, cuando sea aplicable.Hay un parche de entrada de video.
Quartz Composer es un entorno de programación visual que se integra en un programa Cocoa más grande si es necesario.
http://developer.apple.com/graphicsimaging/quartz/quartzcomposer.html
Otra solución es OpenCV+python con un guión como:
import cv
capture = cv.CaptureFromCAM(0)
img = cv.QueryFrame(capture)
¡No puedo hacerlo más simple!