이미지 블렌딩 게임

  1. 게임 실행시 이미지 블렌딩시작 문구 출력
  2. 블렌딩할 이미지 장수 입력받기 난이도
  3. 블렌딩 이미지 결과 띄우기
  4. 정답 입력
  5. 맞췄습니다, 하나라도 틀릴경우 틀렸습니다 6-1. 정답시, 재시작 여부 묻기 6-2. 오답시, 재도전 기회
#######
while True:
    print('★★★★★★★★이미지 블렌딩 게임 시작!★★★★★★★★')
    input_size = int(input('이미지 블렌딩 장수 선택(2 or 3)>>'))
    if input_size < 4:
        ext_img = [] # 경로
        ext_name = [] # 한국어 정답
        rd_int = np.random.randint(0, len(img_fd), size=input_size)
        for i in rd_int:
            img_path = f'./crawlingDB/{img_fd[i]}'
            en_name = img_fd[i].split('.')[0]
            ko_name = name_dict[en_name]
            ext_img.append(img_path)
            ext_name.append(ko_name)
            
        # 문제
        add_img(ext_img, input_size)

        # 정답 체크
        cnt = result(input_size)
        print()

        wrong_cnt = 3 # 재도전 횟수
        while cnt != 1:
            # 입력이 틀리면
            print(f'맞출 수 있는 남은 횟수 : {wrong_cnt}')
            wrong_cnt -= 1 # 재도전 기회 하나 차감
            cnt = result(input_size) # 다시 정답 입력 기회

            if cnt == 1 or wrong_cnt <= 0:
                break
            print()

        ch = input('[s]게임 다시 시작    [q]종료 >>')
        if ch == 'q':
            print('이미지 블렌딩 게임 종료!!')
            print()
            break
#######

동영상 출력하기

cap = cv2.VideoCapture('./data/dogs.mp4')

# 동영상은 이미지의 연속이므로
while True:
    ch, frame = cap.read() # ch : 성공 여부 (T or F), frame : 받아온 이미지가 저장된다

    # 실패 할경우 멈추기
    if not ch:
        print('동영상 재생 실패 or 파일 읽기 실패')
        break
    
    cv2.imshow('video1', frame)

    # q라고 하는 알파벳 을 클릭시 동영상 끄기
    key = cv2.waitKey(10)
    if key == ord('q'):
        print("영상 종료")
        break
        
cap.release()
cv2.destroyAllWindow()

사람 인식

!pip install cvlib
!pip install tensorflow==2.16.2

cvlib

객체인식에 용이한 라이브러리로 tensorflow와 OpenCV가 함께 설치되어 있어야만 설치가 가능

tensorflow

데이터 흐름 프로그래밍을 위한 오픈소스 소프트웨어 라이브러리이다


img = cv2.imread('./data/test.png')

faces, conf = cv.detect_face(img)
line_color = [0,255,0]
line_thick = 3

'''
for i in range(len faces)
    # putText (img, 텍스트, 위치, 글꼴, 글씨크기, 색, 두께)
    cv2.putText(img, f'{conf[i]}', (faces[i][0], faces[i][1]-10), cv2.FONT_HERSHEY_PLAIN, 2, color, 2)
    cv2.rectangle(img, (faces[i][0],faces[i][1]), (faces[i][2],faces[i][3]),line_color, line_thick)
'''

# 감지된 사각형을  씌워주고 정확도를 출력
# 약간 dict 형태 (x,y,x2,y2), c  = list(zip(faces,conf))[i] 나눠준다
# 약간 향상 for 문?
for (x,y,x2,y2), c in zip(faces,conf):
    cv2.putText(img, f'{c.2f}', (x, y-10), cv2.FONT_HERSHEY_PLAIN, 2, color, 2)
    cv2.rectangle(img, (x,y), (x2,y2),line_color, line_thick)

cv2.imshow('test', img)
cv2.waitKet(0)
cv2.destroyAllWindow()

영상 얼굴 인식