OpenCV 1: 이미지 및 카메라(사진, 동영상) 제어 메서드
컴퓨터 비전 라이브러리인 OpenCV의 메서드들을 정리한 글이다.
별도로 자세한 원리 설명은 생략하고, 간단히 메서드의 문법들을 정리했다.
이미지 읽기, 출력, 쓰기
# 이미지 읽기
cv2.imread(path, flag)
# flag: 0(cv2.IMREAD_GRAYSCALE, 흑백)
# flag: 1(cv2.IMREAD_COLOR, 칼라, default)
# flag: -1(cv2.IMREAD_UNCHANGED, 알파값도 같이 읽음)
# 이미지 출력(새 윈도우)
cv2.imshow(title, img) # img: numpy배열(cv2.imread()의 반환값)
# 이미지 출력(matplot)
img = cv2.imread(fname, cv2.IMREAD_COLOR)
plt.imshow(img)
plt.show() # 주의: opencv는 색상을 [b,g,r]순서, matplot등 대부분의 경우는 [r,g,b]로 색상 표현
# 따라서, 원본 이미지와 색상이 다르게 나타난다. 별도로 cvtcolor를 해주어야 한다.
# 이미지 쓰기
cv2.imwrite(fname, img) # fname: 파일명
카메라 제어
VideoCapture
객체 생성. 0이면 컴퓨터에 연결된 카메라를 자동으로 탐색, 연결- loop를 돌며 frame을 읽어옴
- 읽은 frame에 대해서 변환작업 수행, 화면에 출력
VideoCapture
를 release(종료)하고 window를 닫는다.
# 사진 찍기
cap = cv2.VideoCapture(0) # 카메라 open
cap.isOpened() # bool, 카메라 오픈시 True 반환
cap.set(가로/세로 상수, 크기) # 가로(3), 세로(4) 입력. 영상의 사이즈 세팅
cap.get(가로/세로 상수) # 가로(3), 세로(4). 영상의 사이즈값 반환
ret, frame = cap.read() # 영상 읽기. ret: 처리결과(bool), frame: 읽어온 영상(1프레임)
# 동영상 관련
cv2.VideoWriter('파일명', 코덱종류, 초당 프레임 수, 가로세로 크기) # 영상저장 객체
cv2.VideoWriter_fourcc(*'DIVX') # 사용할 코덱 지정
# 동영상 찍기/저장 실습
import cv2
cap = cv2.VideoCapture(0) # 카메라 open(비디오캡처 객체 생성)
codec = cv2.VideoWriter_fourcc(*'DIVX') #사용할 코덱 생성
out = cv2.VideoWriter('a.avi', codec, 25.0, (640,480)) # 동영상 저장 객체 생성
while cap.isOpened(): # 카메라 정상 오픈일 때 동작
ret, frame = cap.read() # 카메라 영상 읽기
if ret: # abs읽기가 정상이면
out.write(frame) # 동영상파일 작성
cv2.imshow('frame', frame) # 현재 frame을 윈도우에 출력
if cv2.waitKey(1) & 0xFF == ord('q'): # q입력 시 종료
break
else:
break
cap.release() # 비디오캡처 객체 릴리즈
out.release() # 동영상 저장 객체 릴리즈
cv2.destroyAllWindows() # 창을 닫아줌
# 동영상 읽기
cap = cv2.VideoCapture('a.avi') # 동영상 파일 오픈
while cap.isOpened(): # 동영상 파일이 정상 오픈이면
ret, frame = cap.read() # 동영상에서 frame을 읽음
if not ret:
break
cv2.imshow('a.avi', frame) # 읽은 frame을 윈도우에 출력
if cv2.waitKey(42) & 0xFF == ord('q'): # q입력 시 종료
break
cap.release()
cv2.destroyAllWindows()
Leave a comment