맥북 웹캠으로 영상 받아서 파일로 저장하는 Python 코드

오늘은 간단하지만 재밌는 작업을 해보려고 합니다. iMac이나 맥북의 경우 웹캠을 내장하고 있는데요. 해당 웹캠에서 영상을 받아서 이미지로 저장하거나 영상을 출력하는 코드를 작성해 보려고 합니다. 기초이지만, 영상 처리를 위한 첫 발걸음이니 가볍게 봐주세요.

우선 Python에서 opencv를 사용하여 간결하게 처리하려고 합니다.

만약 아직도 Python 설치가 안되어 있다면 아래 포스팅을 통해, 맥에 Python을 설치하세요.

아래 명령어로 opencv-python을 설치합니다.

pip3 install --upgrade pip
pip3 install opencv-python

설치가 되었다면 아래 코드를 작성합니다.

import cv2

# Open camera
camera = cv2.VideoCapture(0)

# Read frame
ret, frame = camera.read()

if ret:
    # Save image
    file_path = '/path/to/save/image.jpg'
    cv2.imwrite(file_path, frame)

# Close camera
camera.release()

무척이나 간결하면서도 바로 파일을 저장할 수 있습니다.

코드는 다음과 같은 절차로 동작합니다.

먼저 cv2를 import 합니다. VideoCapture() 함수를 이용하여, camera 변수에 카메라를 할당합니다. camera 변수에서, read() 함수로 카메라에서 프레임을 읽습니다. 결과도 함께 리턴합니다. 이후, 결과값이 있다면(즉, 성공적으로 카메라를 읽었다면), 해당 프레임을 특정 디렉토리의 이미지로 저장합니다(imwrite()). 이후, 카메라를 해제합니다.(release())

실행은 python3 filename.py 로 하시면 됩니다. 이전 버전이 설치되어 있다면, python filename.py 로 하시면 됩니다.

이제 이미지 저장을 해봤으니, 웹캠의 영상을 실시간으로 보는 코드를 작성해 보겠습니다.

아래 코드를 입력하고 실행합니다.

import cv2

# Open camera
camera = cv2.VideoCapture(0)

while True:
    # Read frame
    ret, frame = camera.read()

    if ret:
        # Show frame
        cv2.imshow('Webcam', frame)

    # 'q' for quit
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# Close camera
camera.release()

# Close windows
cv2.destroyAllWindows()

opencv + python의 막강하고 간결함을 한눈에 볼 수 있는 코드입니다.

코드를 보시면 직관적으로 어떤 것인지 아실 수 있습니다.

먼저, cv2를 import 합니다. 카메라를 열고, 무한 루프 안으로 들어옵니다. 루프에서는 이미지를 받는 부분과, 루프를 빠져나가는 부분으로 나뉩니다.

이미지 캡쳐를 계속 받는 부분은 이미지 저장할 때와 동일한 코드입니다.

루프안에서는 키를 받아서 처리하는데, ord()는 유니코드의 정수값을 리턴하는 함수입니다. 유니코드의 순서를 리턴한다고 생각하시면 됩니다. ordinal의 약어 입니다. cv2의 waitKey가 문자열이 아닌 해당 키의 값을 리턴하므로, ord() 함수를 사용했습니다. q 가 들어올때 까지 루프를 돌다가 q 값이 들어오면 종료합니다.

화면에 표시하는 부분은, imshow()를 사용합니다.

무한루프가 종료가 되면, 카메라를 해제하고, 윈도를 닫아줍니다.

맥은 재밌게도, 아이폰을 웹캠처럼 사용할 수 있습니다.

그래서, 아래 처럼 찍어봤습니다.

감사합니다.

Leave a Comment