openCV
2024. 6. 19. 17:41ㆍJetson
✅ 이미지
!pip3 install opencv-python # opencv 설치하는 코드
import cv2
img = cv2.imread('Handle.png', -1) # 첫번째 입력값 : 경로를 포함한 이미지 정보
# 두번째 입력값 : 0, 1, -1 -> 이미지를 읽는 방식
# 0 : 흑백 / 1 :컬러 / -1 : 원래 이미지의 상태(원본)
# print(img)
print(type(img))
import ipywidgets
ipywidgets.Audio()
import ipywidgets # 파이썬에서 위젯을 사용할 수 있는 라이브러리
from IPython.display import display # 실제 이미지를 display할 수 있는 라이브러리
img_widget = ipywidgets.Image(format = 'png')
cv2.imencode('.png', img) # 리스트 형태로 출력
# -> 0번 인덱스 -> 결과 값이 있으면 true / or false,
# -> 1번 인덱스 -> 실제 데이터
img_widget.value = cv2.imencode('.png', img)[1].tostring()
display(img_widget)
✅ 동영상
ls /usr/share/visionworks/sources/data
cp /usr/share/visionworks/sources/data/pedestrians.mp4 /home/jetbot/AIoT_jetbot
import cv2
import ipywidgets as widgets # 파이썬 위젯 만들기
from IPython.display import display # 실제 이미지를 display할 수 있는 라이브러리
cap = cv2.VideoCapture('pedestrians.mp4') # 동영상 파일 불러와서 비디오 객체 생성(capture) -> capture(동영상을 캡쳐캡쳐해서 확인)
print(cap.isOpened()) # True -> 정상적으로 불러와졌다
import time
if cap.isOpened():
# print(cap.read())
ret, img = cap.read() # ret -> cap 객체를 순차적으로 읽어서 저장, 읽을게 있다면 True / or False
while ret: # ret == True
img_widget.value = cv2.imencode(".jpeg", img)[1].tostring() # 배열의 형태를 문자열로!
time.sleep(0.1)
ret, img = cap.read() # 반복문이 끝나기 전 프레임을 다시 받아들일건지 결정
cap.release()
img_widget = widgets.Image()
display(img_widget)
✅ OpenCV 활용해서 이미지에 도형 그리기, 글씨 쓰기
- 선, 원, 직선, 텍스트
- 색깔의 배열 순서가 RGB가 아닌 BGR이다!
import cv2
img = cv2.imread('Handle.png', -1)
import ipywidgets
from IPython.display import display
img_widget = ipywidgets.Image(format = 'png')
cv2.imencode('.png', img)
img_widget.value = cv2.imencode('.png', img)[1].tostring()
display(img_widget)
!pip3 install matplotlib
import matplotlib.pyplot as plt
img = cv2.imread('Handle.png', 1)
img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR) # RGB -> BGR
plt.imshow(img)
# x1, y1 : 좌상단 / x2, y2 : 우상단
# 1. 선 그리기 -> line(img, (x1, y1), (x2, y2), (B,G,R), 두께)
cv2.line(img, (0, 150), (700, 500), (255, 0, 0), 5)
# 2. 직사각형 그리기 -> rectangle(img, (x1, y1), (x2, y2), (B,G,R), 두께)
cv2.rectangle(img, (0, 150), (700, 500), (0, 0, 255), 3)
# 3. 원 그리기 -> circle(img, (x1, y1), (x2, y2), (B,G,R), 두께) : 음수 -> 원 채우기 / 양수 -> 외곽선
cv2.circle(img, (200, 300), 100, (255, 255, 0), -3)
# 4. 텍스트 -> putText(img "텍스트", 위치, 글씨체, 글씨크기, (B,G,R), 두께)
cv2.putText(img, 'JETBOT', (200, 150), cv2.FONT_HERSHEY_SCRIPT_SIMPLEX, 3, (0, 255, 0), 10)
import ipywidgets
from IPython.display import display
img_widget = ipywidgets.Image(format = 'png')
cv2.imencode('.png', img)
img_widget.value = cv2.imencode('.png', img)[1].tostring()
display(img_widget)
'Jetson' 카테고리의 다른 글
Face Tracking (1) | 2024.06.21 |
---|---|
Cat Detection (0) | 2024.06.20 |
FaceDetection (0) | 2024.06.20 |
Buzzer와 RGBstrip (0) | 2024.06.19 |
LED와 Button (0) | 2024.06.18 |