ユーザ用ツール

サイト用ツール


opencv関係

**文書の過去の版を表示しています。**

OpenCV関係

OpenCVのインストール (Jetson Xavier NX編)

2021/9/11 今日は、Xavier NXにOpenCV最新版をインストールしてみる。

AastaNV

installopencv4.5.0Jetson.sh の中を再確認すると、中でsudoしているようなので、sudoは必要なさそう。 また、現在の最新版は4.5.3のようなので、version=4.5.3と編集。 また、sudo sudo … となっているところあるので、それもsudo一つ消した。

このインストールスクリプトを実行しながら、これらの元ネタなどを探してみる。 このスクリプトにも、NVIDIAのコピーライトが書かれている。

公式な情報を探してみる。 以下のスクリプトも発見。

Build OpenCV on Nvidia Jetson Nano (mdegans)

https://github.com/mdegans/nano_build_opencv

OpenCVのインストール (Jetson Nano編)

Jetson Nanoの標準的な環境でも、普通に、OpenCVをパッケージで導入できるようだが、 「バージョンが古い?」とか、「せっかくのGPUにも対応していない?」などという話が、 ネット上でちらちらと見られるため、最初から、最新のバージョンで、かつ、 GPUを使用できるOpenCV環境を導入してみる。

最新のOpenCV環境の導入は、以下で公開されているスクリプトの実行で一発。

https://github.com/AastaNV/JEP/tree/master/script

$ 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

一度は、このままやってみたが、メモリ足らずだろう、途中で、他のターミナル上でも何も動かせず、 リモートログインもできず、にっちもさっちもいかなくなった。 なので、スワップメモリを確保して、やり直した。 以下が、スワップメモリの追加の方法。

https://github.com/JetsonHacksNano/installSwapfile

$ wget https://github.com/JetsonHacksNano/installSwapfile/raw/master/installSwapfile.sh
$ chmod 775 installSwapfile.sh
$ ./installSwapfile.sh

完了したら、リブートして、以下のコマンドを実行して、スワップメモリが追加されていることを確認。

$ free -m

無事、確認できたら、

$ sudo ./install_opencv4.5.0_Jetson.sh opencv

で、再度、OpenCV 4.5.0のインストールスクリプトを実行。 今回は、時間は結構かかるが、無事、インストール作業が進んで、以下のようなメッセージが最後に出たら、 インストール完了。

** Install opencv-4.5.0 successfully
** Bye :)
$ 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:
#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;
}
opencv関係.1631329292.txt.gz · 最終更新: 2021/09/11 12:01 by makotoa67