ラベル OpenCV の投稿を表示しています。 すべての投稿を表示
ラベル OpenCV の投稿を表示しています。 すべての投稿を表示
2022/02/22

Jetson上のDockerコンテナでCSIカメラを使用する

概要

NVIDIA L4T MLのDockerイメージを使用することで,JetsonでCUDAサポートがONのOpenCVの環境を比較的手軽に準備できるようになりました. そこで本投稿では,Jetson上で起動しているDockerコンテナから,Jetsonに接続されたRaspberry Pi Camera Module 2などのCSIカメラを使用する方法について紹介します.

Jetson Jetson Nano
JetPack 4.6
NVIDIA L4T ML l4t-ml:r32.6.1-py3
CSIカメラ Raspberry Pi Camera Module 2
準備
CSIカメラの接続

Jetson Nanoをシャットダウンして電源ケーブルを外した状態で,CSIカメラを確実に接続してください. インターネット上に接続方法の解説記事が数多くありますので参考にしてください.

サンプルコードの入手

サンプルコードをGitHub Gistに置きましたので,git cloneするかブラウザでダウンロードしてください.

CSIカメラの動作確認

これ以降の作業は,Jetsonにキーボード,マウスおよびディスプレイを接続して直接GUIログインしていることを前提に説明します.

Dockerコンテナ上でCSIカメラが使用できるか確認する前に,Jetson OS上で使用できるか確認しておくと良いです. 先ほどgit cloneしたディレクトリにあるPythonスクリプトを下記のとおり実行してください.CSIカメラで撮影中の映像がウィンドウに表示されます. 映像表示ウィンドウがアクティブな状態でESCキーを押下すると,ウィンドウが閉じてPythonスクリプトの実行が終了します.

なお,CSIカメラの動作確認方法はNVIDIAのチュートリアルにも紹介があります.

CSIカメラをDockerコンテナで使用する
方法

方法については,下記ページの「Run the container」に簡単な記載があります. つまり,docker runコマンドのオプションとして-v /tmp/argus_socket:/tmp/argus_socketを付加する必要があります. 一方,例えば/dev/video1としてJetson OSに認識されているUSBカメラを使用したい場合は,--device /dev/video1:/dev/video1:rwmを付加する必要があります.

See /opt/nvidia/deepstream/deepstream-6.0/README inside the container for deepstream-app usage information. Additional argument to add to above docker command for accessing CSI Camera from Docker: -v /tmp/argus_socket:/tmp/argus_socket For USB Camera additional argument --device /dev/video
Dockerコンテナの起動スクリプト例

先ほどgit cloneしたディレクトリにDockerコンテナの起動スクリプト例,run_with_csi-camera.shがあります. お好みのテキストエディタで内容を確認してください.

run_with_csi-camera.shを実行するとDockerコンテナが起動します. l4t-ml:r32.6.1-py3のDokcerイメージがローカルに存在しない場合は,初回にPullされます.

CSIカメラの動作確認

git cloneしたディレクトリはDockerコンテナ上の/dataにマウントされています. ここにあるOpenCVの簡単なサンプルコードを実行して,DockerコンテナでCSIカメラが使用できることを確認します.

opencv_csi-camera.pyはCSIカメラで撮影中の映像がウィンドウに表示されます. 映像表示ウィンドウがアクティブな状態でESCキーを押下すると,ウィンドウが閉じてPythonスクリプトの実行が終了します.

opencv_face-detection_csi-camera.pyはCSIカメラの映像から顔を検出し,顔が検出された場合は映像に顔の領域を示す白枠を描画してウィンドウに表示します. 映像表示ウィンドウがアクティブな状態でESCキーを押下すると,ウィンドウが閉じてPythonスクリプトの実行が終了します.

製品紹介

2022/02/20

NVIDIA L4T MLのDockerイメージで,Jetson上にCUDAをサポートするOpenCVの環境を準備する

概要

JetPack 4.6にはOpenCV 4.1.1が含まれていますが,CUDAサポートがOFFになっています. ここでは比較的手軽にCUDAサポートがONのOpenCVの環境を準備する方法として,NVIDIA L4T MLのDockerイメージを使用する方法をメモしておきます.

Jetson Jetson Nano
JetPack 4.6
NVIDIA L4T ML l4t-ml:r32.6.1-py3
NIVIDIA NGCとNVIDIA L4T ML

NVIDIA NGCでは,さまざまな用途のための,ディープラーニング,機械学習およびHPC向けのDockerイメージが配布されています. Jetson向けのDockerイメージは下記のリンクから一覧表示できます.

NVIDA NGCで配布されているDockerイメージの1つにNVIDIA L4T MLがあります.これはディープラーニング,機械学習やデータサイエンスの各種フレームワークをPython 3.6上で使用するための環境です. 下記ページの「Package Versions」を確認するとl4t-ml:r32.6.1-py3のリストにはOpenCV 4.5.0 (with CUDA)と記載されており,CUDAサポートがONになっていることがわかります.

Dockerコンテナを起動する
ワーキングディレクトリと起動スクリプトの準備

お好みの場所にワーキングディレクトリを作成し,その中にDockerコンテナの起動スクリプト,run.shを作成します. ここでは既存ディレクトリの/dataの配下にl4t-mlというディレクトリを作成しています.

お好みのテキストエディタでrun.shを作成し,下記リンクのrun.shの内容をコピー・アンド・ペーストしてください. なお,使用するDockerイメージのタグはJetPack 4.6に対応するr32.6.1-py3になっています.違うタグを指定したい場合は,NVIDIA L4T MLのページを参照して任意のタグに置き換えてください.

Dockerコンテナの起動

少なくともこれ以降の作業は,Jetsonにキーボード,マウスおよびディスプレイを接続して直接GUIログインしていることを前提に説明します. run.shに実行権限を付与し,実行してください.初回はDockerイメージのPullがあり,Dockerコンテナの起動に時間がかかります.

Dockerコンテナが起動し,Dockerコンテナの端末が表示されました.

dockerコマンドを実行するとエラーになる場合は,下記が解決の参考になるかもしれません.

Python 3でOpenCVライブラリの情報を確認する

下記の投稿で紹介した方法で,Dockerコンテナ上のOpenCVライブラリの情報を確認してみました. CUDAサポートがONになっています.

製品紹介

JetsonにインストールされているOpenCVの情報を確認する

概要

JetPackは,UbuntuベースのJetson向けOSとJetson SDKコンポーネントのパッケージです.このJetPackにはOpenCVも含まれています. 本記事では,このOpenCVの情報の確認方法を備忘録としてメモします.

Jetson Jetson Nano
JetPack 4.6
JetPackにインストールされているOpenCVのバージョン
JetPack 4.6

JetPackのリリースページにインストールされているOpenCVのバージョンが記載されています. 「KEY FEATURES IN JETPACK」の「Computer Vision」の項目を参照してください.

JetPack 4.6にはOpenCV 4.1.1が含まれていることがわかります. ただし,このOpenCVはCUDAサポートがOFFになっています.OpenCVのサンプルコードを試しに実行する程度であれば,まずはこのOpenCVで良いケースが多いと思います.

なお,CUDAサポートがONのOpenCVは主に下記2通りの方法で入手できます.NVIDIA L4T MLを使用する方法が比較的手軽だと思います.

JetPack 4.6以外

過去のバージョンなど,JetPack 4.6以外のリリースページには下記のリンクからアクセスすることができます.

Jetson statsでOpenCVライブラリの情報を確認する
Jetson statsをインストールする

Jetson statsは,Jetsonのモニタリングや制御ができるユーティリティです.後述のようにPython 3でもOpenCVライブラリの情報を確認することができますが,Jetson statsではコマンド1つでより簡単に確認できます.

下記のコマンドを実行することでインストールできます.インストール後に再起動してください.

Jetson statsでOpenCVライブラリの情報を確認する

jetson_releaseコマンドを実行します.「OpenCV: 4.1.1 compiled CUDA: NO」という情報から,CUDAサポートがOFFのOpenCV 4.1.1がインストールされていることが確認できます.

Python 3でOpenCVライブラリの情報を確認する
バージョンを確認する

Python 3では,OpenCVがインストールされていることと,インストールされているOpenCVのバージョンを下記のように確認できます.

ビルド情報を確認する

インストールされているOpenCVのビルド情報も確認することができます.

製品紹介

2015/03/19

OpenCV 2.4.11をUbuntu 14.04 32bitにインストール

OpenCV 2.4.11がリリースされていたので,仮想マシン上のUbuntu 14.04 LTS 32bitにインストールしました. 作業手順をメモしておきます. 掲載内容に間違いがありましたら,コメントにてご指摘いただければ幸いです.

インストール前の準備
  1. 既存環境を最新状態に更新する
  2. 下記コマンドを実行しました.

  3. OpenCVのソースファイルをダウンロードする
  4. ホームディレクトリに「OpenCV」ディレクトリを作成し,OpenCVのソースをダウンロードしました. ダウンロードした圧縮ファイルは,展開しておきました.

インストール
シェルスクリプトの準備

作業を自動化するために,シェルスクリプトを作成しました. 「opencv-2.4.11.sh」というファイル名で,下記コードをホームディレクトリに保存してください.

シェルスクリプトの実行

シェルスクリプトを実行しました. 実行中,パスワードの入力を求められる場合があります. 私の環境では,実行完了まで1時間弱かかりました.

製品紹介
OpenCV 2 プログラミングブック OpenCV 2.2/2.3対応
OpenCV 2 プログラミングブック制作チーム
マイナビ
売り上げランキング: 186,614
2015/01/07

OpenCV 2.4.10をUbuntu 14.04 32bitにインストール

OpenCV 2.4.10を仮想マシン上のUbuntu 14.04 LTS 32bitにインストールしました. OpenCVをLinux環境にインストールしたのは初めてで,ちゃんとインストールできるまでにかなり時間がかかってしまいました…. 作業手順をメモしておきます. 掲載内容に間違いがありましたら,コメントにてご指摘いただければ幸いです.

インストール前の準備
  1. 既存環境を最新状態に更新する
  2. 下記コマンドを実行しました.

  3. OpenCVのソースファイルをダウンロードする
  4. ホームディレクトリに「OpenCV」ディレクトリを作成し,OpenCVのソースをダウンロードしました. ダウンロードした圧縮ファイルは,展開しておきました.

  5. ソースにパッチを適用する(32bit環境のみ)
  6. Ubuntu 14.04 LTS 32bitではmakeがエラー終了してしまいました. 対処方法は,core: fix x86 PIC code compilationで紹介されています. 「opencv-2.4.10_system.cpp.patch」というファイル名で,下記コードをホームディレクトリに保存してください.

    ホームディレクトリに戻り,パッチを適用してください.

インストール
シェルスクリプトの準備

作業自動化のため,下記のWebサイトを参考に,シェルスクリプトを作成しました. 下記コードを,「opencv-2.4.10.sh」というファイル名で,ホームディレクトリに保存してください.

[変更 2015/03/18] cmakeコマンドのオプション記述を変更しました.改行位置を変更したのみで,シェルスクリプトの動作に影響はありません.

シェルスクリプトの実行

シェルスクリプトを実行しました. 実行中,パスワードの入力を求められる場合があります. 私の環境では,実行完了まで1時間弱かかりました.

(参考)cmakeの実行結果

私の環境でのcmakeの実行結果は下記のとおりです. ホームディレクトリに作成されるログファイル「opencv-2.4.10_install.log」で確認できます.

動作確認

Webカメラの映像を表示するプログラムをコンパイルし,実行してみました. 私の環境では,14~16行目のようにフレームサイズとフレームレートを設定しなかった場合,端末に「select timeout」と表示されてWebカメラの映像を表示できませんでした. Webカメラは720p,30fpsにも対応している,Logicool HD Webcam C270です. 仮想マシン上で実行していることなど,環境依存の問題なのではないかと考えていますが,表示できなかった理由はわかっていません….

上記コードを「webcam.cpp」というファイル名で保存し,コンパイルと実行を行いました.

実行例です.ウィンドウがMac OS X風ですが,Ubuntuです.


webcamの実行結果

以上,参考になれば幸いです.

製品紹介
LOGICOOL ウェブカム HD画質 120万画素 C270
ロジクール (2010-08-20)
売り上げランキング: 736