NVIDIA Jetson Nanoでの树莓派相机模块V2を使用したソ,ベルエッジ検出
この例では,NVIDIA®杰森Nanoに接続された覆盆子π相机模块V2からのイメージをキャプチャして処理する方法を示します。MATLAB® Coder™ Support Package for NVIDIA Jetson and NVIDIA DRIVE Platforms を使用すると、Camera Module V2 からのイメージをキャプチャして MATLAB 環境に持ち込んで処理することができます。この例では、この機能を使用してソーベル エッジ検出アルゴリズムを開発する方法を学習します。
必要条件
タ,ゲットボ,ド要件
NVIDIA Jetson Nano組み込みプラットフォ,ム。
ターゲットのCSIホスト端子に接続された覆盆子π相机模块V2。
ターゲットボードとホストPCを接続するイーサネットクロスオーバーケーブル(ターゲットボードをローカルネットワークに接続できない場合)。
ボ、ドに、ンスト、ルされているNVIDIA CUDA Toolkit。
ボド上のV4L2ラブラリとSDL (v1.2)ラブラリ。
ボド上のGStreamerラブラリ。
コンパ@ @ラおよびラ@ @ブラリ用のタ@ @ゲット上の環境変数。詳細は,NVIDIA板的安装和设置先决条件(NVIDIA Jetson金宝app和NVIDIA DRIVE平台的MATLAB Coder支持包)を参照してください。
開発用ホスト要件
CUDAコ,ド生成用のGPU编码器。チュトリアルにいては,GPU编码器入門を参照してください。
ホスト上のNVIDIA CUDA工具包。
コンパ▪▪ラおよびラ▪▪ブラリの環境変数。詳細は,サ,ドパ,ティハ,ドウェアと前提条件となる製品の設定を参照してください。
フォルダの作成と関連ファルのコピ
次のコード行は,ホスト上の現在の作業フォルダーに1つのフォルダーを作成し,すべての関連ファイルをそのフォルダーにコピーします。このフォルダーにファイルを生成できない場合は,このコマンドを実行する前に現在の作業フォルダーを変更してください。
nvidiademo_setup (“sobel_edge_detection”);
NVIDIA Jetson Nanoへの接続
このサポートパッケージは,生成されたCUDAコードを杰森Nanoプラットフォームでビルドおよび実行している間,TCP / IPによるSSH接続を使用してコマンドを実行します。ターゲットプラットフォームをホストコンピューターと同じネットワークに接続するか,イーサネットクロスケーブルを使用してボードをホストコンピューターに直接接続します。ボドを設定して構成する方法にいては,nvidiaのドキュメントを参照してください。
Nvidiaハ,ドウェアと通信するには,関数杰森
(NVIDIA Jetson金宝app和NVIDIA DRIVE平台的MATLAB Coder支持包)を使用してラ▪▪ブハ▪▪ドウェア接続オブジェクトを作成します。ライブハードウェア接続オブジェクトを作成するには,ターゲットボードのホスト名またはIPアドレス,ユーザー名,およびパスワードを知っている必要があります。たとえば,ターゲットボードに初めて接続するときに,次のコマンドを使用して,杰森ハードウェア用のライブオブジェクトを作成します。
Hwobj = jetson(“jetson-nano-name”,ubuntu的,ubuntu的);
ハードウェアライブオブジェクトの作成中に,サポートパッケージが,ハードウェアとソフトウェアのチェック,IOサーバーのインストールの実行,およびターゲット上の周辺機器情報の収集を行います。この情報はコマンドウィンドウに表示されます。
hwobj
オブジェクトの関数getCameraList
を実行して,利用可能なカメラを見けます。この関数が空の表を出力する場合は,カメラを再接続して,関数を再度実行してください。
camlist = getCameraList(hwobj);
タゲットボドでのgpu環境の検証
この例を実行するのに必要なコンパイラおよびライブラリが正しく設定されていることを検証するために,関数coder.checkGpuInstall
を使用します。
envCfg = code . gpuenvconfig (“杰森”);envCfg。BasicCodegen = 1;envCfg。安静= 1;envCfg。HardwareObject = hwobj;coder.checkGpuInstall (envCfg);
カメラオブジェクトの作成
関数getCameraList
から取得した名前を使用して,カメラオブジェクトを作成します。たとえば,カメラの名前がvi输出,imx219 6-0010
である場合,次を使用します。
camObj = camera(hwobj,vi-output, imx219 6-0010"480年[640]);
camObj
はカメラオブジェクトへのハンドルです。相机模块V2からキャプチャされたイメージをMATLABで表示するには,次のコマンドを使用します。
为i = 1:100 img =快照(camObj);显示亮度图像(img);drawnow;结束
このカメラオブジェクトはRGBおよび3チャネルのグレースケールイメージをキャプチャします。
表示オブジェクトの作成
表示オブジェクトを作成するには,関数imageDisplay
を使用します。このオブジェクトは,関数imshow
を使用してMATLABでメジを表示する系统对象です。
dispObj = imageDisplay(hwobj);img =快照(camObj);图像(dispObj, img);
ソ,ベルエッジ検出アルゴリズム
ソベルエッジ検出アルゴリズムは,グレスケルメジでの2次元空間勾配演算です。この演算は,エッジに相当する。
勾配の計算
それぞれのソーベルカーネルを使用して,入力イメージの水平方向の勾配(h)と垂直方向の勾配(v)を求めます。これら2のソベルカネルは,互いに直交しています。カメラからのライブイメージデータを処理する前に,サンプルイメージに対してアルゴリズムをテストします。
Kern = [1 2 1;0 0 0;-2 -1];Img = imread(“peppers.png”);
显示亮度图像(img);
H = conv2(img(:,:,2),kern,“相同”);V = conv2(img(:,:,2),kern',“相同”);
勾配の大きさの計算
水平方向の勾配および垂直方向の勾配(hおよびv)から勾配の大きさを求めます。
E =根号下(h。*h + v *v);
エッジ▪▪メ▪▪ジのしきい値処理
。
edgeImg = uint8((e > 100) * 240);
显示亮度图像(edgeImg);
ソベルエッジ検出アルゴリズムのラブデタでの実行
この例の前のセクションで構築したmatlabコドからmatlabエントリポント関数sobelEdgeDetectionAlg.m
を作成します。MATLABエディターでコードを表示します。
编辑(“sobelEdgeDetectionAlg.m”);
関数sobelEdgeDetectionAlg
は,エッジ検出用の@ # @メ,ジとしきい値の入力を受け取り,エッジ検出アルゴリズムの結果を返します。ルプの内側からキャプチャされたメジに対してこの関数を呼び出します。しきい値変数打
は,適切なエッジ。このようにして,サポートパッケージのカメラアクセス機能を使用して,指定されたカメラに適したアルゴリズムを調整することができます。
为i = 1:200 img =快照(camObj);脱粒= 100;edgeImage = sobelEdgeDetectionAlg(img, thresh);图像(dispObj edgeImage);结束
この例をスタンドアロンアプリケ,ションとしてタ,ゲットボ,ドに展開するには,在NVIDIA Jetson Nano上部署和运行带有I/O的Sobel边缘检测(NVIDIA Jetson金宝app和NVIDIA DRIVE平台的MATLAB Coder支持包)を参照してください。
クリ,ンアップ
サンプルファルを削除して,元のフォルダに戻すには,関数清理
を呼び出します。
清理
参考
オブジェクト
杰森
(NVIDIA Jetson金宝app和NVIDIA DRIVE平台的MATLAB Coder支持包)|开车
(NVIDIA Jetson金宝app和NVIDIA DRIVE平台的MATLAB Coder支持包)
関連するトピック
- Nvidiaハドウェアでの実行可能ファルのビルドと実行
- GPU编码器アプリを使用したNVIDIAハ,ドウェアでの実行可能ファ,ルのビルドと実行
- 停止或重新启动在NVIDIA硬件上运行的可执行文件(NVIDIA Jetson金宝app和NVIDIA DRIVE平台的MATLAB Coder支持包)
- 在NVIDIA硬件上运行Linux命令(NVIDIA Jetson金宝app和NVIDIA DRIVE平台的MATLAB Coder支持包)