주지하다시피 Jetson TX2 개발보드에는 온보드 형태의 CSI카메라가 장착되어 있다.


기존에 Jetpack 3.1에서 영상을 받아올때는 OpenCV 3.3.0을 Build & Install 방식으로 설치해서 gstream으로 받아오는 형태로 비디오 영상을 받아왔는데 Jetpack 3.2에서는 OpenCV 3.3이 설치과정에서 설치가 되므로 영상 받아오는것도 바로 되는줄 알았다.

하지만 Jetpack 3.2에서 똑같은 OpenCV가 포함된 Project 를 불러오면 Build 는 정상적으로 진행되지만 실행하게 되면


Cannot open camera 라는 메시지와 함께 정상적으로 실행되지 않는다.


https://devtalk.nvidia.com/default/topic/1031497/jetson-tx2/onboard-camera-stream-changed-in-jetpack-3-2-/ 에 올라온 답변을 보면


OpenCV in Jetpack 3.2 does not enable gstreamer. Please not install OpenCV via Jetpack 3.2 but build/install manually.


즉 Jetpack 3.2에 포함된 OpenCV는 gstream 이 포함되지 않아서 발생하는 문제이고 OpenCV는 수동으로 Build/install해야 한다는 거다.

아래 링크를 따라서 스크립트를 다운로드 하고 OpenCV를 설치해본다.


https://github.com/AastaNV/JEP/blob/master/script/install_opencv3.4.0.sh


$ ./install_opencv3.4.0.sh 

Usage: ./install_opencv3.4.0.sh <Install Folder>


스크립트를 실행하려면 폴더를 지정해야 한다는 에러 메세지가 나오므로 아무 폴더를 만들어서 지정한다.

Build 후 Install까지 성공적으로 진행되면 일단 재부팅


재부팅 후 해당 프로그램을 다시 실행하면 정상적으로 영상이 나타나는것을 확인할 수 있다.


참고로 파이썬에서 OpenCV를 통해 영상을 받아오는 부분은 다음과 같다.


import cv2

#Start capture video from Camera

cap = cv2.VideoCapture("nvcamerasrc ! video/x-raw(memory:NVMM), width=(int)1280, height=(int)720, format=(string)I420, framerate=(fraction)30/1 ! nvvidconv flip-method=4 ! video/x-raw, format=(string)BGRx ! videoconvert ! video/x-raw, format=(string)BGR ! appsink")


여기서 굵은 글씨 부분은 I420 또는 BGRx 둘다 쓸 수 있는데 어떤 이유인지 BGRx가 좀더 응답속도가 빠르다. 


터미널에 아래와 같은 에러 메세지가 출력되는데 어떤 이유인지는 좀더 살펴봐야겠다.


VIDEOIO ERROR: V4L: device nvcamerasrc ! video/x-raw(memory:NVMM), width=(int)1280, height=(int)720, format=(string)I420, framerate=(fraction)30/1 ! nvvidconv flip-method=4 ! video/x-raw, format=(string)BGRx ! videoconvert ! video/x-raw, format=(string)BGR ! appsink: Unable to query number of channels



2018/3/28 최초 문서 발행





+ Recent posts