※파이선 코딩 초보자를 위한 텐서플로우∙OpenCV 머신 러닝 2차 개정판 발행
http://blog.daum.net/ejleep1/1175
______________________________________________________________________________________________________________________________
CSI-Camera 드라이버는 다음 url 주소에서다운 받아 설치하도록 하자.
https://github.com/JetsonHacksNano/CSI-Camera
라즈베리 파이 전용인 PiCamera를 Jetson Nano에 설치하자. 설치 방법은 라브베리 파이와 거의 유사하며 사진에서처럼 납작한 플랫리본의 앞뒤를 잘 구별하여 설치하면 된다.
라즈베리 파이에서는 PiCamera 라이브러리를 설치하였지만 이와는 달리 Jetson Nano에서는 GStreamer 가 사용된다. 일단 CSI 커넥터 상에 카메라 설치가 완료되었으면 마우스 오른쪽 버튼으로 Open terminal을 열어서 다음의 GStreamer command line 명령을 실행해 보자. 이 명령은 CSI-Camera 설치 없이도 가능하다. flip-method = 0, 1, 2에 따라 화면 방향이 거꾸로, 측면으로, 바로 설정된다. 기본 해상도는 3820X2464에 1초당 21 frame rate이며, 사용자가 화면에 볼 수 있는 화면 해상도는 width 와 height 값에 의해 결정된다. Opencv 웹캠 기준으로 640X480 이면 충분하다.
다음의 텍스트형 명령 전문을 복사해서 활용하도록 하자.
$ gst-launch-1.0 nvarguscamerasrc sensor_id=0 ! 'video/x-raw(memory:NVMM),width=3280, height=2464, framerate=21/1, format=NV12' ! nvvidconv flip-method=2 ! 'video/x-raw, width=816, height=616' ! nvvidconv ! nvegltransform ! nveglglessink -e
그밖에 이미 CSI-Camera를 Github url 주소에서 다운받아 압축을 해제하여 설치하였다면 별도의 pip install 작업 없이 simple_camera.py를 실행할 수 있을 것이다. 아울러 Haarcascade 라이브러리를 사용하는 face_detect.py도 실행 가능하다. 이와 같이 CSI-Camera 가 준비 되었으면 이어지는 다음 단계의 AI World를 설치 작업을 시작하도록 한다.
Jetson Nano 보드 Opencv 용 웹캠 설치
Jetson Nano 보드에서 Opencv의 cv2.VideoCapture() 명령을 사용해 보자. 다음과 같이 Jetson Nano 보드에 설치된 디바이스 즉 카메라들을 확인해 보자. 웹캠을 설치하기 전에 video0는 CSI-Camera 에 의한 PiCamera를 뜻한다. 웹캠 설치 후 추가된 video1이 바로 웹캠이다.
cv2.VideoCapture(1) 명령에 의해 이 웹캠을 구동이 가능하다. 하지만 PiCamera 에 해당하는 video0 의 경우 cv2.VideoCapture(0) 명령은 실행되지 않음에 유의하자. 즉 video0은 GStreamer 에 의해 묶여 있다고 보면 될 것이다.
다음의 파이선 코드를 사용하여 Jetson Nano 에서 웹캠 사용을 체크해보자.
#Webcam_opencv_01.py
import cv2
import numpy as np
import sys
#import time
cap = cv2.VideoCapture(1)
cap.set(cv2.CAP_PROP_FRAME_WIDTH,640)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT,480)
fps = cap.get(cv2.CAP_PROP_FPS)
print("Frames per second using video.get(cv2.CAP_PROP_FPS)
: {0}".format(fps))
while True:
ret, image = cap.read()
image = cv2.GaussianBlur(image,(5,5), cv2.BORDER_DEFAULT)
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
cv2.imshow('Image', image)
if cv2.waitKey(30) > 0:
break
cv2.destroyAllWindows()
'Jetson Nano' 카테고리의 다른 글
Jetson Nano 보드에서 실시간 인공지능 AI World 어디서부터 시작하나!---II (0) | 2020.05.21 |
---|---|
Jetson Nano 보드에서 실시간 인공지능 AI World를 설치하자!--I (0) | 2020.05.19 |
Jetson Nano에서 PiCamera에 의한 Flask Opencv 안면인식 (0) | 2020.05.15 |
2019 캡스톤 디자인: Jetson Nano 보드 Ubuntu 조립식 PC 제작 (0) | 2019.11.13 |
Jetson Zoo 의 TensorFlow 설치 (0) | 2019.11.09 |