我想在程序中使用Macbook中的相机。我对语言无关 - C,Java,Python等都很好。任何人都可以建议寻找文件或“Hello world”类型代码的最佳位置吗?
答案 0 :(得分:7)
Leopard中的ImageKit框架有一个IKPictureTaker
类,可以让你运行你在iChat和其他应用程序中看到的标准拍照表或面板。
如果您不想使用标准的图片收集器面板/工作表界面,则可以使用QTKit Capture功能从iSight获取图像。
这两个都需要在Objective-C中编写一些Cocoa代码,但这些日子不应该成为障碍。
答案 1 :(得分:2)
如果您想直接从代码中操作相机,则必须使用QuickTime Capture API或Cocoa QTKit Capture包装器(更好)。
唯一需要注意的是:如果使用QTCaptureDecompressedVideoOutput,请记住回调不是在主线程上进行的,而是在QuickTIme管理的捕获线程上进行的。使用[someObject performSelectorOnMainThread:... withObject:... waitUntilDone:NO]将消息发送到主线程上的对象。
答案 2 :(得分:1)
有一个名为isightcapture的实用程序,它从unix命令行运行,从isight摄像头拍摄照片并保存。
您可以在以下网站查看:http://www.macupdate.com/info.php/id/18598
使用AppleScript的一个例子是:
告诉应用程序“终端” 做脚本“/ Applications / isightcapture myimage.jpg” 结束告诉
答案 3 :(得分:1)
从一个特别要求解决方案为pythonic的相关问题中,您应该尝试安德鲁·斯特劳的motmot's camiface库。它也适用于火线相机,但它也适用于你正在寻找的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,)
中使用它
答案 4 :(得分:0)
当适用时,Quartz Composer也是一种捕获和处理视频的愉快方式。有一个视频输入补丁。
Quartz Composer是一个可视化编程环境,如果需要,它可以集成到更大的Cocoa程序中。
http://developer.apple.com/graphicsimaging/quartz/quartzcomposer.html
答案 5 :(得分:0)
另一个解决方案是OpenCV+python,其脚本如下:
import cv
capture = cv.CaptureFromCAM(0)
img = cv.QueryFrame(capture)
不能做任何更简单的事情!