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

StackOverflow https://stackoverflow.com/questions/57424

Вопрос

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

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

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

Скажите приложение «терминал» do script »/applications/isightcapture myimage.jpg"

Из связанного с этим вопроса, в котором конкретно требовалось, чтобы решение было питоническим, вам следует попробовать камфас Мотмота библиотека от Эндрю Стро.Он также работает с камерами FireWire, но также работает и с isight, который вам нужен.

Из учебника:

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

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

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

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

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

Другое решение OpenCV+питон со сценарием типа:

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

Невозможно сделать ничего проще!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top