728x90
opencv를 사용하기 위한 기본적인 라이브러리 설치
pip install numpy
pip install matplotlib # 시각화 라이브러리
pip install opencv-python # opencv 라이브러리
pip install pillow # 이미지 처리 라이브러리
opencv 라이브러리 임포트
import cv2
이미지
파일 불러오기
img = cv2.imread('image_path')
파일 저장하기
cv2.imwrite('save_path', img)
윈도우 창 만들기
cv2.namedWindow()
윈도우 창 끄기
cv2.destroyAllWindows()
윈도우 창에 파일 출력
(윈도우 창 이름을 꼭 써줘야 한다. 빈 문자열도 가능)
cv2.imshow('', img)
키 입력 대기
cv2.waitKey()
이미지 출력 기본 예제
import cv2
img = cv2.imread('image_path') # 이미지 부르기(NumPy 배열로 반환)
cv2.namedWindow('Display Window') # display window 만들기
cv2.imshow('Display Window', img) # display window에 이미지 올리기
cv2.waitKey() # 키 입력 대기
cv2.destroyAllWindows() # 키 입력되면 window 다 삭제
cv2.imread()로 나오는 결과는 numpy의 ndarray 형태로
(height, width, channel) shape이고,
파일 경로에 한글이나 특수 문자가 포함되면 이미지 파일을 제대로 읽지 못할 수 있다!
++
코랩과 주피터 노트북에서는 cv2.imshow()가 안되기 때문에 matplotlib의 imshow()를 사용해야 한다.
opencv의 색상 표기가 BGR 형태이고, matplotlib은 색상 표기가 RGB 형태이기 때문에 바꿔줘야 한다.
-> cv2.cvtColor(이미지, 색상변환코드)
import matplotlib.pyplot as plt
img = cv2.imread('image1.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.imshow(img)
영상
카메라 / 영상 열기
# 원하는 동영상(mp4나 avi)이 있다면
cap = cv2.VideoCapture('video_path')
# 웹캠 키기
cap = cv2.VideoCapture(0)
카메라 / 영상이 잘 열리는지 확인
cap.isOpend() # T/F 반환
카메라 / 영상에서 프레임 받기(한 장 캡쳐)
# ret: 프레임이 잘 받아졌는지 True, False 반환
# frame: 한 장 받은 프레임
ret, frame = cap.read()
프레임 보여주기
cv2.imshow('video display', frame)
저장할 파일 열기
cv2.VideoWriter(저장할 파일 이름, 프레임 압축을 위한 코덱 코드, 프레임 속도, 프레임 사이즈)
codec = cv2.VideoWriter_fourcc(*'DIVX')
fps = cap.get(cv2.CAP_PROP_FPS) # 비디오 프레임(fps) 받기
width = round(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = round(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
# 동영상 저장할 변수
out = cv2.VideoWriter('out.avi', codec, fps, (width, height))
카메라 / 영상 저장
out.write(frame)
키 입력 대기
cv2.waitKey(1) # 영상은 1
카메라 / 영상 종료
cap.release()
동영상 출력(웹캠) 기본 예제
cap = cv2.VideoCapture(0) # 웹캠 사용해서 open
codec = cv2.VideoWriter_fourcc(*'DIVX')
fps = cap.get(cv2.CAP_PROP_FPS) # 비디오 프레임(fps) 받기
width = round(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = round(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
out = cv2.VideoWriter('out.avi', codec, fps, (width, height)) # 동영상 저장할 변수
while True: # 영상이 계속 들어오면
ret, frame = cap.read()
if not ret: # 안읽히면
break
out.write(frame) # 영상 저장
cv2.imshow('video', frame) # 영상 출력
if cv2.waitKey(1) == 27: # ESC키면(누른 키의 아스키코드 값을 쓴다)
break
out.release()
cap.release()
cv2.destroyAllWindows()
'비전' 카테고리의 다른 글
[MediaPipe] 포즈 인식 (0) | 2024.08.25 |
---|---|
[MediaPipe] 얼굴 인식 (0) | 2024.08.23 |
[OpenCV] 특정 색 검출 (0) | 2024.08.20 |
[OpenCV] 그리기 함수 (0) | 2024.08.19 |
[OpenCV] 마스킹 (0) | 2024.08.18 |