Доступ к iSight программно?

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

12.08.2008 15:31:40
7 ОТВЕТОВ

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

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

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

4
12.08.2008 15:39:32
Привет ... Я получаю страницу не найдена для ссылки developer.apple.com, которую вы предложили ... Можете ли вы обновить ее?
Devarshi 19.01.2012 05:49:28
Эта ссылка все еще выдает ошибку 404. Можете ли вы обновить ссылку или еще лучше улучшить ответ, чтобы он не зависел от ссылки.
ChrisF♦ 27.02.2017 14:30:43

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

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

Кроме того, я полагаю, что в / Developer / examples / должен быть один или два примера.

0
12.08.2008 18:53:01

Есть утилита командной строки, isightcaptureкоторая делает более или менее то, что вы хотите сделать. Возможно, вы могли бы получить код от разработчика (его адрес электронной почты находится в файле readme, который вы получаете при загрузке утилиты).

1
13.08.2008 15:49:52

Вы должны проверить документацию 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
9
14.08.2008 05:28:59

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

2
14.08.2008 14:56:14

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

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

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

1
23.05.2017 12:31:59

Из связанного вопроса, в котором конкретно указывалось, что решение должно быть pythonic, вы должны попробовать Motmot CAMIFACE Library от 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
3.02.2010 15:35:58