ユーザ用ツール

サイト用ツール


opencv関係

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

OpenCV関係

OpenCVのインストール

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[])
{
  //cv::VideoCapture cap(1);//�f�o�C�X�̃I�[�v��
  //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(cv::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
    //�ǂݍ��݂Ɏ��s�����Ƃ��̏���
    return -1;
  }

  int width = cap.get(cv::CAP_PROP_FRAME_WIDTH);
  int height = cap.get(cv::CAP_PROP_FRAME_HEIGHT);
  int fps = cap.get(cv::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);
  
  cv::Mat frame; //�擾�����t���[��

  while(cap.read(frame)) { //�������[�v
    cv::imshow("win", frame);//�摜���\���D
    const int key = cv::waitKey(1);
    if (key == 'q'/*113*/) {//q�{�^���������ꂽ�Ƃ�
      std::cout << "dims: " << frame.dims << ", depth(byte/channel): " << frame.elemSize1() << ", channels: " << frame.channels() << std::endl;
      break;//while���[�v���甲�����D
    } else if(key == 's'/*115*/) { //s�������ꂽ�Ƃ�
      //�t���[���摜���ۑ������D
      cv::imwrite("img.bmp", frame);
    }
  }
  
  cv::destroyAllWindows();
  
  return 0;
}
opencv関係.1624703952.txt.gz · 最終更新: 2021/06/26 19:39 by admin