Программный доступ к iSight?

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
7
0
11 289
7

Ответы 7

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

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

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

привет ... У меня не найдена страница для ссылки на developer.apple.com, которую вы предложили ... вы можете ее обновить?

Devarshi 19.01.2012 09:49

Эта ссылка по-прежнему выдает ошибку 404. Можете ли вы обновить ссылку или еще лучше улучшить ответ, чтобы он не полагался на ссылку.

ChrisF 27.02.2017 17:30

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

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

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

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

Вы должны проверить Документация по 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

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

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

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

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

Из связанного вопроса, в котором конкретно указано, что решение должно быть питоническим, вы должны попробовать библиотеку камуфляж мотмота от Эндрю Стро. Он также работает с камерами 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,)

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