2008-09-11 20 views

回答

7

Leopard中的ImageKit框架有一個IKPictureTaker類,它允許您運行在iChat和其他應用程序中看到的標準圖片拍攝表或面板。

如果您不想使用標準圖片獲取器面板/圖紙界面,您可以使用QTKit Capture功能從iSight獲取圖像。

這兩個都需要在Objective-C中編寫一些Cocoa代碼,但這些應該不是真正的障礙。

+0

我很高興看到一些示例代碼,如果有人達到這一點。也許直接通過ctypes? – meduz 2010-07-11 12:39:10

1

有一個稱爲isightcapture的實用程序,它從unix命令行運行,從isight攝像頭拍攝一張照片並將其保存。

您可以在這個網站看看:http://www.macupdate.com/info.php/id/18598

使用這種使用AppleScript的一個例子是:

告訴應用程序「終端」 做劇本「/應用/ isightcapture myImage.jpg」這個參數 end tell

2

如果您想直接從您的代碼中操作攝像頭,則必須使用QuickTime Capture API或包裝(更好)。

唯一需要注意的是:如果使用QTCaptureDecompressedVideoOutput,請記住回調不是在主線程上進行,而是在QuickTIme管理的捕獲線程上進行。使用[someObject performSelectorOnMainThread:... withObject:... waitUntilDone:NO]將消息發送到主線程上的對象。

1

從一個相關的問題,其具體要求的解決方案是Python的,你應該給安德魯·斯特勞一個嘗試motmot's camiface庫。它也適用於火線照相機,但它也適用於瞄準器,這正是您所需要的。

從教程:

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

它被用來在這個sample neuroscience demo

0

另一種解決方案是OpenCV+python一個腳本,如:

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

不能做任何簡單!

相關問題