Как я могу получить кадры iSight с Python в Snow Leopard?

SQLite по умолчанию создает файл журнала в начале транзакции, что хорошо. Обычно он удаляет файл при коммите.

Вы можете изменить это поведение, просто обрезая файл (не нужно создавать / удалять) или обнуляя его, с помощью команды PRAGMA sql. Не все опции могут поддерживаться в вашей версии SQLite.

PRAGMA journal_mode = DELETE | TRUNCATE | PERSIST | MEMORY | OFF  

Операции записи обычно не завершаются до тех пор, пока вы не совершите COMMIT, что реализуется путем усечения, удаления или аннулирования журнала.

Если это новое поведение, у меня нет объяснения, почему оно могло измениться, за исключением обновления SQLite, которое изменило поведение по умолчанию или стало более изощренным, если не открывать журнал для каждой транзакции.

5
задан Martin Blech 16 October 2009 в 07:23
поделиться

2 ответа

Ваша проблема в том, что у вас нет цикла событий. Если вы хотите сделать это как отдельный скрипт, вам нужно придумать, как его создать. Шаблоны PyObjC XCode автоматически настраивают это для вас с помощью:

from PyObjCTools import AppHelper
AppHelper.runEventLoop()

Однако попытка вставить это в начало вашего скрипта показывает, что что-то внутри AppHelper (вероятно, NSApplicationMain ) ожидает файл .plist, из которого нужно извлечь основной класс. Вы можете получить это, создав файл setup.py и используя py2app , что-то вроде этого примера из выступления PyObjc :

from distutils.core import setup
import py2app
plist = dict(
    NSPrincipalClass='SillyBalls',
)
setup(
    plugin=['SillyBalls.py'],
    data_files=['English.lproj'],
    options=dict(py2app=dict(
        extension='.saver',
        plist=plist,
    )),
)
3
ответ дан 14 December 2019 в 19:18
поделиться

Вам стоит попробовать библиотеку camiface motmot от Эндрю Стро. Он также работает с камерами 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,)
2
ответ дан 14 December 2019 в 19:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: