内容へ移動
MakotoA67's Wiki
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
opencv関係
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
===== OpenCV関係 ===== ==== OpenCVのインストール (Jetson Xavier NX編) ==== 2021/9/11 今日は、Xavier NXにOpenCV最新版をインストールしてみる。 Jetson Nanoでも、いっとき、OpenCVをセットアップして、カメラから得られる画像に対して画像処理するテスト動作まではやってみていた。今回、Xavier NXを購入しましたので、これを契機に、せっかくパフォーマンスが高いXavier NXなので、それを活かしてみたい、というところ。 [Jetson Nano]OpenCVからCUDAを使ってみる https://hikotech.net/post-286/ にも書かれていますが、NVIDIAのJetsonシリーズを折角使うのですから、NVIDIAのGPU (CUDA)を使いたい。 折角のOpenCVの環境なのに、内部的にCPUでしか処理されていない、っていうのはもったいない。 ということで、CUDAを使用するOpenCVをセットアップして使用したい。 AastaNV https://github.com/AastaNV/JEP/tree/master/script 以下のスクリプトも発見。 Build OpenCV on Nvidia Jetson Nano (mdegans) https://github.com/mdegans/nano_build_opencv README.mdを見てみると以下のように。 <code> OpenCV build script for Tegra This script builds OpenCV from source on Tegra (Nano, NX, AGX, etc.). Related thread on Nvidia developer forum here. </code> How to Install OpenCV 4.5 on NVIDIA Jetson Nano https://automaticaddison.com/how-to-install-opencv-4-5-on-nvidia-jetson-nano/ まあ、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から) * インストール というところ。 <code> ** Install opencv-4.5.3 successfully ** Bye :) </code> Xavier NXもセットアップしたばかりなので、とりあえず、USBカメラを接続。 /dev/video0出現 cheeseでカメラの動作を確認。OK。 ==== OpenCVのインストール (Jetson Nano編) ==== Jetson Nanoの標準的な環境でも、普通に、OpenCVをパッケージで導入できるようだが、 「バージョンが古い?」とか、「せっかくのGPUにも対応していない?」などという話が、 ネット上でちらちらと見られるため、最初から、最新のバージョンで、かつ、 GPUを使用できるOpenCV環境を導入してみる。 最新のOpenCV環境の導入は、以下で公開されているスクリプトの実行で一発。 https://github.com/AastaNV/JEP/tree/master/script <code> $ wget https://github.com/AastaNV/JEP/raw/master/script/install_opencv4.5.0_Jetson.sh $ chmod 775 install_opencv4.5.0_Jetson.sh $ sudo ./install_opencv4.5.0_Jetson.sh opencv </code> 一度は、このままやってみたが、メモリ足らずだろう、途中で、他のターミナル上でも何も動かせず、 リモートログインもできず、にっちもさっちもいかなくなった。 なので、スワップメモリを確保して、やり直した。 以下が、スワップメモリの追加の方法。 https://github.com/JetsonHacksNano/installSwapfile <code> $ wget https://github.com/JetsonHacksNano/installSwapfile/raw/master/installSwapfile.sh $ chmod 775 installSwapfile.sh $ ./installSwapfile.sh </code> 完了したら、リブートして、以下のコマンドを実行して、スワップメモリが追加されていることを確認。 <code> $ free -m </code> 無事、確認できたら、 <code> $ sudo ./install_opencv4.5.0_Jetson.sh opencv </code> で、再度、OpenCV 4.5.0のインストールスクリプトを実行。 今回は、時間は結構かかるが、無事、インストール作業が進んで、以下のようなメッセージが最後に出たら、 インストール完了。 <code> ** Install opencv-4.5.0 successfully ** Bye :) </code> <code> $ python3 -c 'import cv2; print(cv2.getBuildInformation())' |grep NVIDIA NVIDIA CUDA: YES (ver 10.2, CUFFT CUBLAS) NVIDIA GPU arch: 53 62 72 NVIDIA PTX archs: </code> ``` export OPENBLAS_CORETYPE=ARMV8 ``` <code> #include "opencv2/opencv.hpp" #include "opencv2/core/utils/logger.hpp" using namespace cv; int main(int argh, char* argv[]) { VideoCapture cap(0); //cap.set(CAP_PROP_FRAME_WIDTH, 640); //cap.set(CAP_PROP_FRAME_HEIGHT, 720); 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 << "VideoCapture is opened." << std::endl; //std::cout < "Width x Height = " << width << " x " << height << "\n"; //printf("WIdth x Height = %d x %d\n", width, height); printf("WIdth x Height = %d x %d, fps = %d\n", width, height, fps); Mat frame; while(cap.read(frame)) { imshow("win", frame); const int key = waitKey(1); if (key == 'q'/*113*/) { std::cout << "dims: " << frame.dims << ", depth(byte/channel): " << frame.elemSize1() << ", channels: " << frame.channels() << std::endl; break; } else if(key == 's'/*115*/) { imwrite("img.bmp", frame); } } destroyAllWindows(); return 0; } </code>
opencv関係.txt
· 最終更新: 2022/06/22 21:54 by
makotoa67
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ