ユーザ用ツール

サイト用ツール


opencv関係

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
opencv関係 [2021/06/26 19:39] – [OpenCVのインストール] adminopencv関係 [2022/06/22 21:54] (現在) makotoa67
行 1: 行 1:
 ===== OpenCV関係 ===== ===== 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をパッケージで導入できるようだが、 Jetson Nanoの標準的な環境でも、普通に、OpenCVをパッケージで導入できるようだが、
行 8: 行 74:
 GPUを使用できるOpenCV環境を導入してみる。 GPUを使用できるOpenCV環境を導入してみる。
  
-最新のOpenCV環境の導入は、以下で公開されているスクリプトの実行で一発とのこと+最新のOpenCV環境の導入は、以下で公開されているスクリプトの実行で一発。
  
 https://github.com/AastaNV/JEP/tree/master/script https://github.com/AastaNV/JEP/tree/master/script
行 58: 行 124:
     NVIDIA PTX archs:     NVIDIA PTX archs:
 </code> </code>
 +
 +```
 +export OPENBLAS_CORETYPE=ARMV8
 +```
  
 <code> <code>
行 67: 行 137:
 int main(int argh, char* argv[]) int main(int argh, char* argv[])
 { {
-  //cv::VideoCapture cap(1);//�f�o�C�X�̃I�[�v�� +  VideoCapture cap(0);
-  //cap.open(0);//�������ł��ǂ��D +
-  //cv::utils::logging::setLogLevel(cv::utils::logging::LOG_LEVEL_VERBOSE); +
-  cv::VideoCapture cap(0);//�f�o�C�X�̃I�[�v��+
  
-  //cap.set(cv::CAP_PROP_FRAME_WIDTH, 640); +  //cap.set(CAP_PROP_FRAME_WIDTH, 640); 
-  //cap.set(cv::CAP_PROP_FRAME_HEIGHT, 720); +  //cap.set(CAP_PROP_FRAME_HEIGHT, 720);
-  //cap.set(cv::CAP_PROP_FPS, 10.0); +
-   +
-  //cap.set(cv::CAP_PROP_CONVERT_RGB, 0);+
  
-  if(!cap.isOpened()) {//�J�����f�o�C�X�������ɃI�[�v���������m�F�D +  if(!cap.isOpened()) {
-    //�ǂݍ��݂Ɏ��s�����Ƃ��̏���+
     return -1;     return -1;
   }   }
  
-  int width = cap.get(cv::CAP_PROP_FRAME_WIDTH); +  int width = cap.get(CAP_PROP_FRAME_WIDTH); 
-  int height = cap.get(cv::CAP_PROP_FRAME_HEIGHT); +  int height = cap.get(CAP_PROP_FRAME_HEIGHT); 
-  int fps = cap.get(cv::CAP_PROP_FPS);+  int fps = cap.get(CAP_PROP_FPS);
      
   std::cout << "VideoCapture is opened." << std::endl;   std::cout << "VideoCapture is opened." << std::endl;
行 93: 行 156:
   printf("WIdth x Height = %d x %d, fps = %d\n", width, height, fps);   printf("WIdth x Height = %d x %d, fps = %d\n", width, height, fps);
      
-  cv::Mat frame; //�擾�����t���[��+  Mat frame;
  
-  while(cap.read(frame)) { //�������[�v +  while(cap.read(frame)) { 
-    cv::imshow("win", frame);//�摜���\���D +    imshow("win", frame); 
-    const int key = cv::waitKey(1); +    const int key = waitKey(1); 
-    if (key == 'q'/*113*/) {//q�{�^���������ꂽ�Ƃ�+    if (key == 'q'/*113*/) {
       std::cout << "dims: " << frame.dims << ", depth(byte/channel): " << frame.elemSize1() << ", channels: " << frame.channels() << std::endl;       std::cout << "dims: " << frame.dims << ", depth(byte/channel): " << frame.elemSize1() << ", channels: " << frame.channels() << std::endl;
-      break;//while���[�v���甲�����D +      break; 
-    } else if(key == 's'/*115*/) { //s�������ꂽ�Ƃ� +    } else if(key == 's'/*115*/) { 
-      //�t���[���摜���ۑ������D +      imwrite("img.bmp", frame);
-      cv::imwrite("img.bmp", frame);+
     }     }
   }   }
      
-  cv::destroyAllWindows();+  destroyAllWindows();
      
   return 0;   return 0;
opencv関係.1624703952.txt.gz · 最終更新: 2021/06/26 19:39 by admin