プログラムで Macbook のカメラを使用したいと考えています。私はかなり言語にとらわれません.C、Java、Pythonなどはすべて問題ありません。ドキュメントまたは「Hello world」タイプのコードを探すのに最適な場所を誰か提案できますか?
6 に答える
Leopard の ImageKit フレームワークにはIKPictureTaker
、iChat やその他のアプリケーションで見た標準的な写真撮影シートまたはパネルを実行できるクラスがあります。
標準の写真撮影パネル/シート インターフェイスを使用したくない場合は、QTKit キャプチャ機能を使用して iSight から画像を取得します。
どちらも、Objective-C で Cocoa コードを書く必要がありますが、最近ではそれが障害になることはありません。
コードからカメラを直接操作したい場合は、QuickTime Capture API またはCocoa QTKit Captureラッパーを使用する必要があります (はるかに優れています)。
唯一の注意点は次のとおりです。QTCaptureDecompressedVideoOutput を使用する場合、コールバックはメイン スレッドではなく、QuickTIme が管理するキャプチャ スレッドで行われることに注意してください。[someObject performSelectorOnMainThread:... withObject:... waitUntilDone:NO] を使用して、メイン スレッド上のオブジェクトにメッセージを送信します。
isight カメラから写真を撮影して保存する、UNIX コマンド ラインから実行される isightcapture というユーティリティがあります。
この Web サイトで確認できます: http://www.macupdate.com/info.php/id/18598
AppleScript でこれを使用する例は次のとおりです。
tell application "Terminal" do script "/Applications/isightcapture myimage.jpg" end tell
ソリューションがpythonicであることを具体的に尋ねた関連する質問から、Andrew Strawのmotmotのcamifaceライブラリを試してみてください。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,)
また、Quartz Composer は、必要に応じてビデオをキャプチャして操作するための快適な方法でもあります。ビデオ入力パッチがあります。
Quartz Composer は、必要に応じてより大きな Cocoa プログラムに統合できるビジュアル プログラミング環境です。
http://developer.apple.com/graphicsimaging/quartz/quartzcomposer.html
別の解決策は、次のようなスクリプトを使用したOpenCV+pythonです。
import cv
capture = cv.CaptureFromCAM(0)
img = cv.QueryFrame(capture)
これ以上簡単なことはできません!