matlab-use-cameras について
Image Acquisition Toolboxのvideoinputを主なインターフェースとして使う、MATLABのカメラ取得スキルです。機器の検出、ライブプレビュー、フレーム取得と、複数のカメラやフレームグラバーへの接続方法を扱います。
主な機能
- 01videoinputによるカメラ接続
- 02アダプターと機器の列挙
- 03画像形式とROIの設定
- 04映像のプレビューとフレーム取得
- 05トリガーと取得条件の設定
活用シーン
- 01USBまたは内蔵ウェブカメラへの接続
- 02ライブ画像や映像フレームの取得
- 03GigE Visionカメラの確認
- 04フレームグラバー経由のCoaXPressまたはCamera Link利用
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ matlab/ matlab-agentic-toolkit --skill matlab-use-camerasインストール後、Claude Code で/matlab-use-camerasを入力して読み込まれたか確認します。
同梱ファイルmanifest.yamlreferences/gentl-setup.md
詳細
MATLABでカメラを使用する
すべてのカメラワークフローで、Image Acquisition Toolboxのvideoinputを主要なインターフェイスとして使用します。その他のインターフェイス(webcam、gigecam)は補助的なものとして扱い、明示的に要求された場合、またはvideoinputが利用できない場合にのみ使用してください。
使用する場合
- ユーザーがカメラ(ウェブカメラ、USB、GigE、USB3 Vision、CoaXPress、Camera Link)への接続を希望している
- ユーザーが画像またはビデオフレームの取得を希望している
- ユーザーがカメラのライブ映像のプレビューを希望している
- ユーザーが利用可能なカメラの一覧表示または列挙を希望している
- ユーザーがCoaXPressフレームグラバーからの画像取得を希望している
- ユーザーがCamera Linkフレームグラバー経由での画像取得を希望している
- ユーザーが「MATLABでウェブカメラ/カメラを使うにはどうすればよいですか?」と尋ねている
- ユーザーがImage Acquisition Toolboxに言及している
使用しない場合
- ユーザーがwebcamサポートパッケージの
webcam()を明示的に要求している - ユーザーがMATLAB Onlineを使用している(
videoinputは利用できないため、webcam()を使用します) - ユーザーが既存ファイルの画像処理を行っている(カメラは関与しません)
- ユーザーが画像機器以外のハードウェア(オシロスコープ、データ収集ボード)を使用している
規約
APIの優先順位
これらのルールは重要です。ユーザーが明示的に別の方法を要求しない限り、従ってください。
- 常にImage Acquisition Toolboxの
videoinput()を主要なカメラインターフェイスとして使用します - デバイスの列挙には常に
imaqhwinfoを使用します。webcamlistやgigecamlistは使用しないでください - GigE Visionカメラには:
gigecamやvideoinput("gige")ではなく、videoinput("gentl", ...)を使用します - WindowsのUSB/内蔵ウェブカメラには:
videoinput("winvideo", ...)を使用します - macOSのUSB/内蔵ウェブカメラには:
videoinput("macvideo", ...)を使用します - LinuxのUSB/内蔵ウェブカメラには:
videoinput("linuxvideo", ...)を使用します - CoaXPressカメラには:
videoinput("gentl", ...)を使用します。CoaXPressフレームグラバーは常にGenTLプロデューサーを提供します - **Camera Linkカメラには:**フレームグラバーがGenTLプロデューサーを提供する場合は
videoinput("gentl", ...)を優先します。提供しない場合は、ベンダー固有のアダプター(例:videoinput("ni", ...)、videoinput("dalsa", ...))を使用します - **ユーザーがフレームグラバーの名称を示さずにCoaXPressまたはCamera Linkカメラを指定した場合:**コードを書く前に、使用しているフレームグラバーをユーザーに確認します。アダプターの選択はフレームグラバーによって異なります
- **
videoinputを「レガシー」または「高度な」インターフェイスと説明してはいけません。**これは主要なフル機能インターフェイスです
webcam()を使用する場合
次の場合に限ります:
- ユーザーが明示的に要求している
- ユーザーがMATLAB Onlineを使用している
- Image Acquisition Toolboxがインストールされていない(
imaqhwinfoで確認します)
必要なサポートパッケージ
| カメラの種類 | アダプター | サポートパッケージ | ベンダーのGenTLプロデューサー(.cti) |
|---|---|---|---|
| USB/内蔵ウェブカメラ(Windows) | "winvideo" | OS Generic Video Interface | 不要 |
| USB/内蔵ウェブカメラ(macOS) | "macvideo" | OS Generic Video Interface | 不要 |
| USB/内蔵ウェブカメラ(Linux) | "linuxvideo" | OS Generic Video Interface | 不要 |
| GigE Visionカメラ | "gentl" | GenICam Interface | 必須 — カメラベンダーから入手 |
| USB3 Visionカメラ | "gentl" | GenICam Interface | 必須 — カメラベンダーから入手 |
| CoaXPressカメラ(フレームグラバー経由) | "gentl" | GenICam Interface | 必須 — フレームグラバーベンダーから入手 |
| Camera Linkカメラ(GenTLプロデューサー) | "gentl" | GenICam Interface | 必須 — フレームグラバーベンダーから入手 |
| Camera Linkカメラ(ベンダーアダプター) | ベンダー固有(例:"ni"、"dalsa") | ベンダー提供のハードウェアアダプター | 該当なし |
**重要:**GenICam Interfaceサポートパッケージが提供するのは、MATLAB側のコンシューマーのみです。gentlカメラを使用する場合、さらにベンダーのGenTLプロデューサー(.ctiファイル)もインストールする必要があります。例:FLIRのSpinnaker SDK、Allied VisionのVimba X、BalluffのImpactAcquire、EuresysフレームグラバーのEuresys eGrabber。プロデューサーはMATLABのサポートパッケージに含まれていません。
ワークフロー
1. デバイスを列挙する
% List all available adaptors and devices
info = imaqhwinfo;
disp(info.InstalledAdaptors)
% Get details for a specific adaptor
adaptorInfo = imaqhwinfo("winvideo");
disp(adaptorInfo.DeviceInfo)
2. カメラに接続する
% USB/built-in webcam on Windows
vid = videoinput("winvideo", 1);
% GigE Vision camera via GenTL
vid = videoinput("gentl", 1);
% Specify a format
vid = videoinput("winvideo", 1, "YUY2_1280x720");
3. プロパティを設定する
% Set color space
vid.ReturnedColorSpace = "rgb";
% Set region of interest [x_offset y_offset width height]
vid.ROIPosition = [0 0 640 480];
% Access device-specific properties via the source object
src = getselectedsource(vid);
4. ライブ映像をプレビューする
preview(vid);
pause(3);
5. フレームを取得する
単一のスナップショット:
img = getsnapshot(vid);
imshow(img);
複数のフレーム(即時トリガー):
vid.FramesPerTrigger = 10;
start(vid);
wait(vid);
[frames, timestamps] = getdata(vid);
手動トリガー(必要に応じて取得):
triggerconfig(vid, "manual");
vid.FramesPerTrigger = 1;
start(vid);
trigger(vid);
img = getdata(vid);
6. クリーンアップする
stoppreview(vid);
stop(vid);
delete(vid);
clear vid;
主な関数
| 関数 | 用途 | 提供元 |
|---|---|---|
imaqhwinfo | アダプターとデバイスの一覧表示 | Image Acquisition Toolbox |
videoinput | ビデオ入力オブジェクトの作成(主要なインターフェイス) | Image Acquisition Toolbox |
preview | ライブ映像の表示 | Image Acquisition Toolbox |
getsnapshot | 単一フレームを即座にキャプチャ | Image Acquisition Toolbox |
start | 取得を開始 | Image Acquisition Toolbox |
getdata | バッファーから取得済みのフレームを取得 | Image Acquisition Toolbox |
stop | 取得を停止 | Image Acquisition Toolbox |
getselectedsource | デバイス固有のプロパティにアクセス | Image Acquisition Toolbox |
triggerconfig | トリガーの種類(即時、手動、ハードウェア)を設定 | Image Acquisition Toolbox |
trigger | start の後に手動トリガーを実行 | Image Acquisition Toolbox |
imageAcquisitionExplorer | 対話型の取得アプリを起動 | Image Acquisition Toolbox |
使用パターン
USB/内蔵ウェブカメラ(Windows)
% Enumerate
info = imaqhwinfo("winvideo");
disp(info.DeviceInfo.DeviceName)
% Connect and configure
vid = videoinput("winvideo", 1, "YUY2_1280x720");
vid.ReturnedColorSpace = "rgb";
vid.FramesPerTrigger = 1;
% Preview and capture
preview(vid);
pause(2);
img = getsnapshot(vid);
imshow(img);
% Clean up
stoppreview(vid);
delete(vid);
clear vid;
GigE Vision カメラ(GenTL)
GenTL アダプターは、GigE Vision および USB3 Vision カメラに推奨されるインターフェイスです。GenICam 標準を完全にサポートし、さまざまなカメラメーカーの製品で動作します。
% Enumerate
info = imaqhwinfo("gentl");
disp(info.DeviceInfo.DeviceName)
% Connect
vid = videoinput("gentl", 1);
vid.ReturnedColorSpace = "rgb";
% Configure acquisition
vid.FramesPerTrigger = 10;
% Access GenICam properties via source object
src = getselectedsource(vid);
% Acquire
start(vid);
wait(vid);
[frames, timestamps] = getdata(vid);
% Clean up
stop(vid);
delete(vid);
clear vid;
GenTL アダプターがインストールされていない場合は、セットアップを案内してください。
- Add-On Explorer から「Image Acquisition Toolbox Support Package for GenICam Interface」をインストールします
- メーカーの GenTL プロデューサー(
.ctiファイル)をインストールします。例:FLIR カメラ用の Spinnaker SDK、Allied Vision 用の Vimba X、またはメーカーの GigE Vision SDK imaqhwinfo("gentl")で確認します。カメラがDeviceInfoに表示されるはずです
GenTL プロデューサーの設定とトラブルシューティングの詳細は、references/gentl-setup.md を参照してください。
CoaXPress カメラ(フレームグラバー経由)
CoaXPress フレームグラバーには必ず GenTL プロデューサーが用意されているため、gentl アダプターを使用する GigE Vision と同じワークフローになります。
% Enumerate — CoaXPress cameras appear under the gentl adaptor
info = imaqhwinfo("gentl");
disp(info.DeviceInfo.DeviceName)
% Connect and acquire
vid = videoinput("gentl", 1);
vid.ReturnedColorSpace = "rgb";
vid.FramesPerTrigger = 10;
src = getselectedsource(vid);
start(vid);
wait(vid);
[frames, timestamps] = getdata(vid);
% Clean up
stop(vid);
delete(vid);
clear vid;
Camera Link カメラ(フレームグラバー経由)
Camera Link には、フレームグラバーのメーカーが GenTL プロデューサーを提供しているかどうかに応じて、2 つの方法があります。
GenTL プロデューサーがある場合(推奨): videoinput("gentl", ...) を使用します。上記の GigE/CoaXPress と同じです。
GenTL プロデューサーがない場合(メーカーのアダプター): imaqhwinfo に登録されているメーカー固有のアダプターを使用します。
% Check which adaptors are available
info = imaqhwinfo;
disp(info.InstalledAdaptors)
% Connect via vendor adaptor (e.g., "ni" for National Instruments)
vid = videoinput("ni", 1);
vid.ReturnedColorSpace = "rgb";
src = getselectedsource(vid);
重要: フレームグラバーが明示されていない状態で、ユーザーが Camera Link または CoaXPress カメラについて言及した場合は、使用しているフレームグラバーを尋ねてください。正しいアダプターはカメラではなく、フレームグラバーによって異なります。
よくある間違い
| 間違い | 誤りである理由 | 正しい方法 |
|---|---|---|
USB カメラに webcam() を使用する | IMAQ の全機能(トリガー、ROI、ロギング、コールバック)を利用できません | videoinput("winvideo", ...) を使用します |
カメラの検出に webcamlist を使用する | Webカメラサポートパッケージのデバイスしか検出できず、産業用カメラは検出されません | imaqhwinfo を使用します |
GigE カメラに gigecam を使用する | インターフェイスが限定されており、GenICam の全機能セットをサポートしていません | videoinput("gentl", ...) を使用します |
videoinput("gige", ...) を使用する | レガシーアダプターであり、積極的に保守されていません | videoinput("gentl", ...) を使用します |
GigE カメラの列挙に gigecamlist を使用する | GigE Vision ハードウェアサポートパッケージに限定されています | imaqhwinfo("gentl") を使用します |
videoinput を「レガシー」と呼ぶ | これは主要な、積極的に保守されているインターフェイスです | videoinput を推奨される方法として紹介します |
キャプチャに snapshot(cam) を使用する | これは Web カメラサポートパッケージの関数です | videoinput では getsnapshot(vid) を使用します |
タイムスタンプに now/datenum を使用する | 非推奨のシリアル日付番号です | タイミングメタデータには datetime("now") を使用します |
| Camera Link には専用のインターフェイスが必要だと思い込む | フレームグラバーのベンダーがプロデューサーを提供している場合、GenTL は Camera Link で動作します | まず videoinput("gentl", ...) を試し、動作しない場合はベンダーアダプターに切り替えます |
Copyright 2026 The MathWorks, Inc.