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