opencv関係
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
opencv関係 [2021/06/26 16:24] – [OpenCVのインストール] admin | opencv関係 [2022/06/22 21:54] (現在) – makotoa67 | ||
---|---|---|---|
行 1: | 行 1: | ||
===== OpenCV関係 ===== | ===== OpenCV関係 ===== | ||
- | ==== OpenCVのインストール ==== | + | ==== OpenCVのインストール |
- | Jetson Nanoのソフトウェア環境は、JetPack環境でも普通にOpenCVを導入できるようだが、 | + | 2021/9/11 |
- | 「バージョン3になってしまう」とか、「(せっかくの)GPUにも対応していない?」などという話が、 | + | 今日は、Xavier NXにOpenCV最新版をインストールしてみる。 |
- | ネット上で見られるため、最初から、最新のOpenCV環境で、かつ、GPUを使用できる環境を構築してみる。 | + | Jetson Nanoでも、いっとき、OpenCVをセットアップして、カメラから得られる画像に対して画像処理するテスト動作まではやってみていた。今回、Xavier NXを購入しましたので、これを契機に、せっかくパフォーマンスが高いXavier NXなので、それを活かしてみたい、というところ。 |
+ | |||
+ | [Jetson Nano]OpenCVからCUDAを使ってみる | ||
+ | |||
+ | https:// | ||
+ | |||
+ | にも書かれていますが、NVIDIAのJetsonシリーズを折角使うのですから、NVIDIAのGPU (CUDA)を使いたい。 | ||
+ | 折角のOpenCVの環境なのに、内部的にCPUでしか処理されていない、っていうのはもったいない。 | ||
+ | ということで、CUDAを使用するOpenCVをセットアップして使用したい。 | ||
+ | |||
+ | AastaNV | ||
+ | |||
+ | https:// | ||
+ | |||
+ | 以下のスクリプトも発見。 | ||
+ | |||
+ | Build OpenCV on Nvidia Jetson Nano (mdegans) | ||
+ | |||
+ | https:// | ||
+ | |||
+ | README.mdを見てみると以下のように。 | ||
+ | |||
+ | < | ||
+ | OpenCV build script for Tegra | ||
+ | This script builds OpenCV from source on Tegra (Nano, NX, AGX, etc.). | ||
+ | |||
+ | Related thread on Nvidia developer forum here. | ||
+ | </ | ||
+ | |||
+ | How to Install OpenCV 4.5 on NVIDIA Jetson Nano | ||
+ | |||
+ | https:// | ||
+ | |||
+ | まあ、AastaNVさんのスクリプトの方がOpenCVのバージョンも4.5.0と新しいし、更新は2020年12月、NVIDIAのコピーライトもあるので、こちらに準じておくか。 | ||
+ | |||
+ | install_opencv4.5.0_Jetson.shの中を再確認すると、中でsudoしているようなので、sudoは必要なさそう。 | ||
+ | また、現在の最新版は4.5.3のようなので、version=4.5.3と編集。 | ||
+ | また、sudo sudo ... となっているところあるので、それもsudo一つ消した。(細かい話し) | ||
+ | |||
+ | このインストールスクリプトの内容を確認。 | ||
+ | インストール時のステップとしては、 | ||
+ | |||
+ | * OpenCVに必要なもの一式のインストール | ||
+ | * OpenCV最新版のダウンロード(ソースコード一式) | ||
+ | * ビルド(cmakeから) | ||
+ | * インストール | ||
+ | |||
+ | というところ。 | ||
+ | |||
+ | < | ||
+ | ** Install opencv-4.5.3 successfully | ||
+ | ** Bye :) | ||
+ | </ | ||
+ | |||
+ | Xavier NXもセットアップしたばかりなので、とりあえず、USBカメラを接続。 | ||
+ | / | ||
+ | |||
+ | cheeseでカメラの動作を確認。OK。 | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== OpenCVのインストール (Jetson Nano編) ==== | ||
+ | |||
+ | Jetson Nanoの標準的な環境でも、普通に、OpenCVをパッケージで導入できるようだが、 | ||
+ | 「バージョンが古い?」とか、「せっかくのGPUにも対応していない?」などという話が、 | ||
+ | ネット上でちらちらと見られるため、最初から、最新のバージョンで、かつ、 | ||
+ | GPUを使用できるOpenCV環境を導入してみる。 | ||
+ | |||
+ | 最新のOpenCV環境の導入は、以下で公開されているスクリプトの実行で一発。 | ||
https:// | https:// | ||
行 15: | 行 84: | ||
</ | </ | ||
- | 一度は、このままやってみたが、メモリ足らずだろう、途中でにっちもさっちもいかなくなった。 | + | 一度は、このままやってみたが、メモリ足らずだろう、途中で、他のターミナル上でも何も動かせず、 |
+ | リモートログインもできず、にっちもさっちもいかなくなった。 | ||
なので、スワップメモリを確保して、やり直した。 | なので、スワップメモリを確保して、やり直した。 | ||
以下が、スワップメモリの追加の方法。 | 以下が、スワップメモリの追加の方法。 | ||
行 40: | 行 110: | ||
で、再度、OpenCV 4.5.0のインストールスクリプトを実行。 | で、再度、OpenCV 4.5.0のインストールスクリプトを実行。 | ||
+ | 今回は、時間は結構かかるが、無事、インストール作業が進んで、以下のようなメッセージが最後に出たら、 | ||
+ | インストール完了。 | ||
+ | < | ||
+ | ** Install opencv-4.5.0 successfully | ||
+ | ** Bye :) | ||
+ | </ | ||
+ | < | ||
+ | $ python3 -c ' | ||
+ | NVIDIA CUDA: YES (ver 10.2, CUFFT CUBLAS) | ||
+ | NVIDIA GPU arch: 53 62 72 | ||
+ | NVIDIA PTX archs: | ||
+ | </ | ||
+ | |||
+ | ``` | ||
+ | export OPENBLAS_CORETYPE=ARMV8 | ||
+ | ``` | ||
+ | |||
+ | < | ||
+ | #include " | ||
+ | #include " | ||
+ | |||
+ | using namespace cv; | ||
+ | |||
+ | int main(int argh, char* argv[]) | ||
+ | { | ||
+ | VideoCapture cap(0); | ||
+ | |||
+ | // | ||
+ | // | ||
+ | |||
+ | if(!cap.isOpened()) { | ||
+ | return -1; | ||
+ | } | ||
+ | |||
+ | int width = cap.get(CAP_PROP_FRAME_WIDTH); | ||
+ | int height = cap.get(CAP_PROP_FRAME_HEIGHT); | ||
+ | int fps = cap.get(CAP_PROP_FPS); | ||
+ | | ||
+ | std::cout << " | ||
+ | |||
+ | //std::cout < "Width x Height = " << width << " x " << height << " | ||
+ | // | ||
+ | printf(" | ||
+ | | ||
+ | Mat frame; | ||
+ | |||
+ | while(cap.read(frame)) { | ||
+ | imshow(" | ||
+ | const int key = waitKey(1); | ||
+ | if (key == ' | ||
+ | std::cout << "dims: " << frame.dims << ", depth(byte/ | ||
+ | break; | ||
+ | } else if(key == ' | ||
+ | imwrite(" | ||
+ | } | ||
+ | } | ||
+ | | ||
+ | destroyAllWindows(); | ||
+ | | ||
+ | return 0; | ||
+ | } | ||
+ | |||
+ | </ |
opencv関係.txt · 最終更新: 2022/06/22 21:54 by makotoa67