본문 바로가기
DataScience/딥러닝

딥러닝 :: OpenCV를 활용한 영상 처리, 도커 복습_TIL54

by 올커 2022. 11. 18.

■ JITHub 개발일지 54일차

□  TIL(Today I Learned) ::

딥러닝_OpenCV 이미지 처리 기초, 도커 Time Attack

 - OpenCV : Open source & Computer vision & Machine learning & Software library

 - OpenCV Docs (*링크)

 - OpenCV pip 명령으로 설치

pip install opencv-python

 - OpenCV 임포트 해오기

import cv2

 - OpenCV에서 이미지 변환을 위해 사용되는 기본 메서드

  1) 영상 파일 불러오기

# 영상 파일 불러오기
cv2.imread(filename, flags=None)
# *flags (cv2.IMREAD_COLOR, cv2.IMREAD_GRAYSCALE, cv2.IMREAD_UNCHANGED)

  2) 영상 파일 저장하기

# 영상 파일 저장하기
cv2.imwrite(filename, img, params=None)

  3) 새 창 띄우기

# 새 창 띄우기
cv2.namedWindow(winname, flags=None)
# *flags (cv2.WINDOW_NORMAL, cv2.WINDOW_AUTOSIZE)
# WINDOW_NORMAL 영상이 클 경우 창의 크기에 맞게 조절, 조절기능 추가

  4) 창 닫기

# 창 닫기
cv2.destroyWindow(winname)
cv2.destroyAllWindows()

  5) 창 위치 이동

# 창 위치 이동
cv2.moveWindow(winname, x, y)

  6) 창 크기 변경

# 창 크기 변경
cv2.resizeWindow(winname, width, height)

  7) 영상 출력하기

# 영상 출력하기
cv2.imshow(winname, mat)

  8) 키보드 입력 대기

# 키보드 입력 대기
cv2.waitKey(delay=None)
# 키보드 입력을 기다리면서 영상을 출력(공백 또는 0 : 키보드 입력을 무한정 기다림, 값을 넣을 경우 msec 단위로 대기했다가 사라진다.)

# key = cv2.waitKey
# print(key)            # 실행할 경우 화면이 종료되고 반환하는 key값을 확인할 수 있다.(키보드 입력시 입력한 키의 ascii값, 누르지 않았을 경우 -1)

# 일정 키를 눌렀을 때 종료하는 방법 (1)
# while True:
#     if cv2.waitKey == 27:       # esc키(ASCII 코드 27)를 눌렀을 때에만 종료
#         break

# 일정 키를 눌렀을 때 종료하는 방법 (2)
# while True:
#     if cv2.waitKey == ord('q'):       # 'q'키를 눌렀을 때에만 종료 (ord는 ascii 값으로 변환하는 함수)
#         break

  9) 컬러 영상 출력

import matplotlib.pyplot as plt
import cv2

# 컬러 영상 출력
imgBGR = cv2.imread('01.jpg')      # imread로 불러온 파일은 기본적으로 BGR로 저장된다.
imgRGB = cv2.cvtColor(imgBGR, cv2.COLOR_BGR2RGB)        # cvtColor는 이미지의 컬러 속성을 변경한다.

plt.axis('off')
plt.imshow(imgRGB)
plt.show()

  10) 그레이스케일 영상 출력

# 그레이스케일 영상 출력
imgGray = cv2.imread('01.jpg', cv2.IMREAD_GRAYSCALE)

plt.axis('off')
plt.imshow(imgGray, cmap='gray')
plt.show()

  11) 두 개의 영상을 함께 출력

# 두 개의 영상을 함께 출력
plt.subplot(121), plt.axis('off'), plt.imshow(imgRGB)
plt.subplot(122), plt.axis('off'), plt.imshow(imgGray, cmap='gray')
plt.show()

 - Docker Time Attack

# 목표 :  docker를 활용해 서비스 배포하기

 

# 요구사항
 1) github에서 timeattack project를 clone 해주세요
  - 레포지토리 주소 : https://github.com/sparta-course/221117_timeattack.git
 2) 프로젝트를 docker와 docker-compose를 활용해 배포해주세요
 3) docker-compose.yml 및 설정 등은 linux/docker 강의자료에 있는 내용을 참고하되,    아래 순서로 배포를 진행하고 각각의 결과물을 저장한 후 제출해주세요

# 문제
 1) django의 runserver 명령어를 사용해 배포해주세요
     - 사용 이미지 : python:3.10.8
 2) postgresql을 연동한 후 배포해주세요
     - 사용 이미지 : postgres:14.5
 3) nginx를 연동한 후 배포해주세요
     - 사용 이미지 : nginx:1.23.2
 4) gunicorn을 사용하여 배포해주세요


 - Docker는 명령어만 무작정 익히기 보다는 다시 강의를 별도로 들으면서 개념에 대해 이해할 필요가 있다고 느꼈다.

반응형

댓글