프로그래밍언어

[소스공유] Python OpenCV 로 영상 촬영 후 저장하는 프로그램 만들기

shoney9254 2021. 5. 3. 23:54
반응형

면접을 준비하는 사람에게 도움이 될수 있도록 프로그램을 만들었다.

 

프로그램을 시작하면 캠에 담긴 나의 모습과 면접 질문이 같이 화면으로 볼수있고,

 

파일명을 면접질문으로 저장하는 프로그램이다. 

 

이 프로그램의 치명적인 단점을 뒤늦게 알았다. 음성이 녹음이 안된다. (...망한 프로젝트 입니다)

 

음성 녹음되도록 만들고 난 뒤에 면접 준비하는 사람들에게 프로그램 공유하겠습니다. 

 

 

1. 면접예상항목.py

면접의 예상 항목들을 집어 넣는 곳이다.

면접예상항목.py

import interviewRecord

 

inter = interviewRecord.interviewRecord()

 

testlist = [ #이 리스트 안에 질문들을 넣어주세요

'1. 질문1',

'19. 마지막 질문'

]

 

jiphap = set(testlist)

 

for i in jiphap:

    if inter.startInterview(i):

        break

 

 

2. interviewRecord.py

별로 어렵지 않다. 소스코드를 보고 필요한 옵션들을 바꿔주면서 사용하면 될거 같다.

 interviewRecord.py

import cv2

import time

from PIL import ImageFont, ImageDraw, Image

import numpy as np

 

class interviewRecord:

 

    def startInterview(self,interviewNo):

        result = False

        directory = 'C://Users//User//Desktop//interview//'

        cap = cv2.VideoCapture(0)

        cap.set(3, 720) # 윈도우 크기

        cap.set(4, 1080)

        fc = 20.0

        codec = cv2.VideoWriter_fourcc('D', 'I', 'V', 'X')

        count = 99

        textinput = str(interviewNo)

        timetext = time.strftime('%Y%m%d%H%M%S',time.localtime(time.time()))

        

        while(cap.isOpened()):

            

            if count != time.strftime('%H',time.localtime(time.time())): # 시간이 바뀌면 영상파일을 새로 만든다. (시간으로 감지)

                count = time.strftime('%H',time.localtime(time.time()))

                print('시간 변경 감지')

                

                out = cv2.VideoWriter(directory+textinput+'('+timetext+').avi', codec, fc, (int(cap.get(3)), int(cap.get(4))))

                print('파일 생성:',time.strftime('%Y-%m-%d %H시 %M분',time.localtime(time.time()))+'.avi')

            

            ret, frame = cap.read()

 

            pill_image = Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))

            draw = ImageDraw.Draw(pill_image)

            x1, y1 = 15, 15

            draw.text((x1, y1), textinput, font=ImageFont.truetype('malgun.ttf', 25), fill=(0, 0, 0))

            frame = cv2.cvtColor(np.array(pill_image), cv2.COLOR_RGB2BGR) #맥

            

            if ret==True:

                cv2.imshow('Shoney Interview Program (''Q'' : next interview , ''E'' : Exit)', frame)

                out.write(frame)

                if cv2.waitKey(1) & 0xFF == ord('q'):

                    break

                elif cv2.waitKey(1) & 0xFF == ord('e'):

                    result = True

                    break

            else:

                break

            

        cap.release()

        cv2.destroyAllWindows()

 

        return result

반응형