본문 바로가기

Python/파이썬 프로젝트

[모듈 2-5] 외부 카메라에서 이미지 받아오기 파이썬 코드(feat. 스마트폰 웹캠 Droid cam)

1. 외부 카메라 장착

 - 노트북 내장카메라나 웹캠을 연결하면 기본적으로 카메라가 잡힌다.

 - 허나, 이러한 환경이 되지 않을 경우는 스마트폰을 웹캠으로 연결하여 사용할 수 있다.

 

 

2. 아이폰 사용자를 위한 ivcam webcam

promation.tistory.com/116

 

ivcam webcam 아이폰과 연결하기, 아이폰을 웹캠으로 사용해보기

스마트폰 웹캠으로 사용하는방법 최근 온라인으로 개학을하거나 화상회의등으로 업무를 진행하는 곳들이 많아지면서 Zoom과 같은 화상회의 프로그램들을 사용하는사람들이 부쩍 늘어난 것을 ��

promation.tistory.com

 

 

3. 안드로이드 사용자를 위한 Droid Cam

 - 데스크탑 버전 Droid Cam 설치

droidcam.softonic.kr/

 

DroidCam

휴대 전화 또는 태블릿을 PC의 웹캠으로 사용할 수있는 앱

droidcam.softonic.kr

 

아래 링크를 참고하여 Droid cam 설치를 해보자.

 

안드로이드 스마트폰을 웹캠 활용 DroidCam 설치 사용 방법

원격수업과 온라인 교실이 강제 시행되고 있어 웹캠을 구하기가 너무 어렵습니다. 누구나 가지고 있는 스마...

blog.naver.com

 

 

 

 

4. 파이썬 이미지 읽어오기 코드 입력

 

 

- 파이썬 이미지 읽어오기 코드

# 모듈 불러오기: import 모듈 이름 - 이미지 사용을 위한 opencv,
# 이미지 저장 파일명 사용을 위한 datetime

import cv2
import datetime

video_capture = cv2.VideoCapture(0)

while (True):

    grabbed, frame = video_capture.read()
    cv2.imshow('Original Video', frame)

    key = cv2.waitKey(1);
    if key == ord('q'):
        break
    elif key == ord('s'):
        file = datetime.datetime.now().strftime("%Y%m%d_%H%M%S%f") + '.jpg'
        cv2.imwrite(file, frame)
        print(file, ' saved')

video_capture.release()
cv2.destroyAllWindows()

 

 

q를 누르면 프로젝트 현재 디렉토리에 사진이 저장되고 s를 누르면 카메락라 종료된다.

 

 

 

 

<코드 미션 도전>

카메라 모드에서 g를 누르면 0.3초 간격으로 10장의 연사가 찍히게 코드를 추가하시오.

 

힌트 1. 파이썬 0.3초 딜레이 구문

import time

time.sleep(0.3);

 

힌트 2. 10번의 반복 for 구문

for (i) in range(10):
	# 반복문 내용

 

 

 

 

5. 예외처리 try - except 코드

# try : 실행할 코드, except : 예외가 발생하면 실행되는 코드
import cv2
import datetime

try:
    video_dev = cv2.VideoCapture(0)

    while True:

        ret, frame = video_dev.read()
        cv2.imshow('Video Screen', frame)

        key = cv2.waitKey(1);
        if key == ord('q'):
            break

        elif key == ord('s'):
            file = datetime.datetime.now().strftime("%Y%m%d_%H%M%S%f") + '.jpg'
            cv2.imwrite(file, frame)
            print(file, ' saved')

except KeyboardInterrupt:
    print('User interruption')

video_dev.release()
cv2.destroyAllWindows()

이때 KeyboardInterrupt 상황은 Terminal에서 python 코드가 동작했을 때, Terminal에서 ctr + c 를 누름으로서 

키보드 인터럽트를 발생시킬 수 있다.

 

pycharm 좌측 하단에 Terminal을 선택하고 

Terminal에서 python wonking.py (현재 파이썬 파일명) 을 입력 해보자.

 

그리고 터미널에 ctr + c 를 누르며 프로그램이 강제 종료 됨을 볼 수 있다.

 

 

 

 

6. try - except - else - finally 흐름에 대해 좀더 알아보기.

출처 : https://gomguard.tistory.com/122

 

예제 코드 입력.

try:
    file = open('data.txt', 'r')

except FileNotFoundError as e:
    print(str(e))

else:
    data = file.read()
    print(data)
    file.close()
finally:
    print("프로그램 종료")

 

코드 실행 : data.txt 파일이 없음으로 아래와 같이 오류 출력

C:\ProgramData\Anaconda3\envs\ai3\python.exe C:/Users/user/Desktop/ai3/wonking.py
[Errno 2] No such file or directory: 'data1.txt'
프로그램 종료

Process finished with exit code 0

 

프로젝트 디렉토리 폴더에서 data.txt 파일에 임의 내용을 생성한다.

 

 

다시 코드를 돌려 파이썬 출력확인.

 

예외처리 흐름도를 확인해 본다.

 

끝.