openCV
# Conda 설치
> conda install opencv
# PIP 설치
> pip install opencv-python
opencv는 VideoCapture을 통해 카메라로 인식된 영상을 처리한다.
import cv2
cap = cv2.VideoCapture(0)
while cap.isOpened():
ret, frame = cap.read()
if ret:
# 정상적으로 정보를 읽었을 때
else:
# 정보를 읽지 못 했을 때
cap.release()
VideoCapture의 경우, 사용할 카메라의 인덱스를 넘겨줘야 한다. 만약 연결된 카메라가 2개라면 첫 번째 카메라가 0, 두 번째 카메라는 1이 된다.
isOpened는 카메라가 정상적으로 열려있다면 True를 반환한다. 따라서 While문의 조건식으로 활용해 카메라가 정상적으로 작동하는 동안 계속해서 코드가 실행되도록 한다.
read의 return값 ret는 프레임(이미지)이 정상적으로 읽어졌는지 여부(True/False)를 나타낸다. frame은 읽어온 프레임(이미지)이다.
마지막 release는 사용한 VideoCapture 객체의 사용을 해제한다.
예시 - 거울 보기
import cv2
cap = cv2.VideoCapture(0)
while cap.isOpened():
ret, frame = cap.read()
frame = cv2.flip(frame, 1)
if ret:
cv2.imshow('frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
# 키보드에서 'q'를 입력하면 종료
break
else:
break
cap.release()
cv2.destroyAllWindows()
flip(이미지, 1)은 이미지를 좌우 반전시킨다. (0은 상하반전)
imshow는 해당 이미지를 화면에 보여준다. 실시간으로 불러온 이미지를 화면에 보여주기 때문에 마치 거울을 보는 것과 같은 화면이 재생된다.
imutils
# Conda 설치
> conda install -c conda-forge imutils
# PIP 설치
> pip install imutils
imutils.video.VideoStream을 활용해 카메라 실시간 처리를 하는 방법도 있다.
import time
from imutils.video import VideoStream
vs = VideoStream(0).start()
time.sleep(2)
while True:
frame = vs.read()
vs.stream.release()
start를 통해 영상을 처리하는 객체를 활성화한다. 그 후, opencv와 같이 read를 통해 이미지(프레임)를 읽고 release를 통해 객체 사용을 해제한다.
예시
import time
import cv2
from imutils.video import VideoStream
vs = VideoStream(0).start()
time.sleep(2)
while True:
frame = vs.read()
cv2.imshow("Frame", frame)
if cv2.waitKey(1) & 0xFF == ord("q"):
break
cv2.destroyAllWindows()
vs.stream.release()