Пример кода для использования камеры Mac в программе?

Я хотел бы использовать камеру в своем Macbook в программе. Я довольно язык агностик - C, Java, Python и т.д. Все в порядке. Может ли кто-нибудь предложить лучшее место для поиска документов или кода типа "Hello world"?

Ответы

Ответ 1

Рамка ImageKit в Leopard имеет класс IKPictureTaker, который позволит вам запускать стандартный снимок листа или панель, которую вы видели в iChat и других приложениях.

Если вы не хотите использовать стандартный интерфейс панели/листа панели изображений, используйте функцию QTKit Capture, чтобы получить изображение из iSight.

Для обоих из них потребуется написать код Cocoa в Objective-C, но в наши дни это не должно быть препятствием.

Ответ 2

Если вы хотите манипулировать камерой непосредственно из своего кода, вы должны использовать API-интерфейс QuickTime Capture или Cocoa QTKit Capture обертка (намного лучше).

Единственное предостережение: если вы используете QTCaptureDecompressedVideoOutput, помните, что обратные вызовы не выполняются в основном потоке, а в потоке захвата, управляемом QuickTIme. Используйте [someObject performSelectorOnMainThread:... withObject:... waitUntilDone: NO] для отправки сообщений объекту в основном потоке.

Ответ 3

Существует утилита isightcapture, которая запускается из командной строки unix, которая берет изображение с камеры isight и сохраняет его.

Вы можете проверить это на этом веб-сайте: http://www.macupdate.com/info.php/id/18598

Пример использования этого с AppleScript:

сообщить программе "Терминал"  do script "/Applications/isightcapture myimage.jpg" end tell

Ответ 4

Из связанного вопроса, который специально попросил решение быть pythonic, вы должны попробовать библиотеку motmot camiface от Andrew Straw. Он также работает с камерами FireWire, но он также работает с пространством, которое вы ищете.

Из учебника:

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,)

Он используется в этой образце демонов nuroscience

Ответ 5

Quartz Composer также является приятным способом захвата и работы с видео, когда он применим. Там есть видеовход.

Quartz Composer - среда визуального программирования, которая в случае необходимости интегрируется в более крупную программу Cocoa.

http://developer.apple.com/graphicsimaging/quartz/quartzcomposer.html

Ответ 6

Другим решением является OpenCV + python с script как:

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

Не может быть проще!