2008-09-11 79 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) 

不能做任何简单!

相关问题