ユーザ用ツール

サイト用ツール


opencv関係

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

OpenCV関係

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

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

AastaNV

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

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 build script for Tegra This script builds OpenCV from source on Tegra (Nano, NX, AGX, etc.).

Related thread on Nvidia developer forum here.

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関係.1631329543.txt.gz · 最終更新: 2021/09/11 12:05 by makotoa67