Доступ к iSight программно? - PullRequest
7 голосов
/ 12 августа 2008

Можно ли получить программный доступ к камере iSight на MacBook? Под этим я подразумеваю, что хотел бы иметь возможность просто захватывать кадры с камеры iSight по команде и затем что-то делать с ними. Если да, то доступен ли он только с помощью цели c, или можно использовать и другие языки?

Ответы [ 7 ]

9 голосов
/ 14 августа 2008

Вам следует ознакомиться с документацией QTKit Capture .

На Leopard вы можете получить все это через мост RubyCocoa:

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

OSX::QTCaptureDevice.inputDevices.each do |device|
    puts device.localizedDisplayName
end
4 голосов
/ 12 августа 2008

У меня нет Mac, но здесь есть документация:

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

Похоже, вам нужно пройти через QuickTime API. Предполагается, что это будет образец проекта под названием "MungGrab", который стоит посмотреть в соответствии с этой веткой .

2 голосов
/ 14 августа 2008

Если вы покопаетесь в списках рассылки Apple, то сможете найти некоторый код для этого и на Java. Вот простой пример, подходящий для захвата отдельных кадров , а - более сложный, достаточно быстрый для отображения живого видео .

1 голос
/ 11 ноября 2008

Одна вещь, о которой пока не упоминалось, это IKPictureTaker , который является частью Image Kit. Это создаст стандартную панель для ОС, позволяющую делать снимки, включая все возможные функции фильтра и т. Д. Я не уверен, что ты этого хочешь.

Полагаю, вы можете использовать его и на других языках, учитывая, что есть такие вещи, как мосты с какао , но у меня нет с ними опыта.

Googling также придумал другой вопрос по stackoverflow , который, похоже, решает эту проблему.

1 голос
/ 13 августа 2008

Есть утилита командной строки с именем <a href="http://www.intergalactic.de/pages/iSight.html" rel="nofollow noreferrer">isightcapture</a>, которая делает более или менее то, что вы хотите сделать. Возможно, вы могли бы получить код от разработчика (его адрес электронной почты находится в файле readme, который вы получаете при загрузке утилиты).

0 голосов
/ 03 февраля 2010

Из соответствующего вопроса, в котором конкретно указывалось, что решение является pythonic, вы должны попробовать библиотеку motmot camiface от Andrew Straw. Он также работает с камерами 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,)
0 голосов
/ 12 августа 2008

Помимо ObjC, вы также можете использовать привязки PyObjC или RubyCocoa для доступа к нему. Если вы не привередливы в том, какой язык я бы сказал, используйте Ruby, так как PyObjC ужасно плохо документирован (даже официальная страница Apple на нем ссылается на старую версию, а не ту, что поставлялась с OS X Leopard)

Quartz Composer, вероятно, самый простой способ получить к нему доступ, и файлы .quartz можно довольно легко внедрить в приложения (и данные передаются в ObjC или тому подобное)

Кроме того, я полагаю, что в / Developer / examples /

должен быть один или два примера.
...