プログラムで Mac カメラを使用するためのサンプルコード?
-
09-06-2019 - |
質問
MacBook のカメラをプログラムで使用したいと考えています。私は言語にあまり依存しません。C、Java、Python などはすべて問題ありません。ドキュメントまたは「Hello world」タイプのコードを探すのに最適な場所を誰かが提案してもらえますか?
解決
Leopard の ImageKit フレームワークには、 IKPictureTaker
このクラスを使用すると、iChat やその他のアプリケーションで見られる標準的な写真撮影シートまたはパネルを実行できます。
標準の写真撮影パネル/シート インターフェイスを使用したくない場合は、 QTKit キャプチャ iSight から画像を取得する機能。
どちらも Objective-C で Cocoa コードを記述する必要がありますが、最近ではそれが大きな障害になることはありません。
他のヒント
コードからカメラを直接操作したい場合は、QuickTime Capture API または Cocoa QTKit キャプチャ ラッパー(はるかに優れています)。
唯一の注意点は次のとおりです。QTCaptureDecompressedVideoOutput を使用する場合、コールバックはメイン スレッドではなく、QuickTIme が管理するキャプチャ スレッドで行われることに注意してください。[someObject PerformSelectorOnMainThread:...] を使用します。withオブジェクト:...waitUntilDone:NO] を使用して、メインスレッド上のオブジェクトにメッセージを送信します。
UNIX コマンドラインから実行される isightcapture というユーティリティがあり、isight カメラから写真を撮って保存します。
次の Web サイトで確認できます。 http://www.macupdate.com/info.php/id/18598
これを AppleScript で使用する例は次のとおりです。
アプリケーション「ターミナル」doスクリプト "/applications/isightcapture myimage.jpg" end tell
解決策がPythonであることを具体的に尋ねた関連する質問から、あなたは試してみるべきです モットモットの顔 アンドリュー・ストローのライブラリ。Firewire カメラでも機能しますが、あなたが探している視力でも機能します。
チュートリアルから:
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)
これ以上簡単なことはできません!