딥 러닝 학습 Week 1

손성수·2023년 5월 16일

프로그램 설치

아나콘다 설치 링크

  • 스크롤 가장 하단, 운영체제에 맞는 프로그램 설치


  • 체크박스 클릭


  • 체크박스 해제
  • VS CODE 설치
    python
    python for VSCode
    python Extension Pack
    Code Runner


  • Anaconda Prompt 실행
    가상환경 설정
conda create --name sparta_project python=3.8 pip
conda activate sparta_project

가상환경 설정 완료

pip install tensorflow

tensorflow ?
구글에서 딥러닝과 머신러닝을 일반인들이 쉽게 사용할 수 있도록 오픈소스로 공개한 라이브러리

앞으로의 학습 참여를 위한 라이브러리 설치

pip install opencv-python
conda install -c conda-forge dlib

설치된 패키지 확인

conda list

Tensorflow,opencv,dlib 설치 확인


아나콘다와 비주얼 스투디오 코드 연동

인터프리터 설정

테스트 코드 작성

import cv2
import tensorflow as tf
import dlib

print(cv2.__version__)
print(tf.__version__)
print(dlib.__version__)

ctrl + f5 를 눌러 실행 하여
버전 확인


딥러닝 이란?

딥러닝 모델의 예시
커피머신
재료(원두)를 넣으면 커피(결과값)이 나온다.
함수
input 값이 들어오면, output, 결과값이 나온다.


딥러닝을 위한 파이썬 기초

  • 이미지를 불러오고, 출력하기
import cv2

# 이미지 불러오기
image = cv2.imread('01.jpg')

# 이미지가 컴퓨터는 숫자로 인식한다
print(image)
# 가로, 세로 픽셀과 체널(RGB)의 숫자
print(image.shape)

# 윈도우 img 호출, 두번째 파라미터의 값을 담아 출력한다.
cv2.imshow('img',image)
# 다음 입력이 올때까지 무한정 대기한다.
cv2.waitKey(0)

  • 이미지 위에 사각형 그리기
cv2.rectangle(image,pt1=(259,89),pt2=(380,348),color=(255,0,0),thickness=2)
# rectangle : 직사각형
# image = 불러온 이미지 정보
# pt 1 왼쪽 위 사각형의 x 좌표
# pt 2 오른쪽 아래 사각형의 x 좌표
# color : BGR 컬러
# thckness : 선의 두께

업로드중..
pt = 1 ( x , y)
pt = 2 ( x , y)
x : 값이 커질수로 좌항에서 우항의 좌표값으로 이동
y : 값이 커질수록 상단에서 하단으로 좌표값을 이동

  • 이미지 위에 원 그리기
cv2.circle(image,center=(320,220),radius=100, color=(0,0,255),thickness=3)
# center  원의 중시점이 될 좌표값
# radius 원의 반지름
  • 이미지 자르기
cropped_image = image[89:348,259:380]
# 이미지를 자르는 좌표의 순서는 y,x 순서로 기입된다.
# 리스트의 첫번째 값 y , 두 번째 값 x
# y축의 89 ~ 348 
# x축의 256 ~ 380
  • 이미지 크기 변경
image_resized = cv2.resize(image,(512,256))
# 가로 512, 세로 256
  • 이미지를 표시하는 방법
    BGR,RGB

BGR > RGB

image_rgb = cv2.cvtColor(image,cv2.COLOR_RGB2BGR)
# image_rgb = cv2.cvtColor(image,cv2.COLOR_RGB2GRAY) #흑백
cv2.imshow('result',image_rgb)
cv2.waitKey(0)

이미지 처리 심화

배경 이미지 위에 다른 이미지 합성하기(Overlay)

import cv2

img = cv2.imread('01.jpg')
overlay_img = cv2.imread('dices.png', cv2.IMREAD_UNCHANGED)
# IMREAD_UNCHANGED : png 파일을 불러오기 위한 요소

overlay_img = cv2.resize(overlay_img,dsize=(150,150))

# BGRA : A = 투명도

overlay_img = cv2.resize(overlay_img, dsize=(150, 150))
overlay_alpha = overlay_img[:, :, 3:] / 255.0
background_alpha = 1.0 - overlay_alpha

x1 = 100
y1 = 100
x2 = x1 + 150
y2 = y1 + 150

img[y1:y2, x1:x2] = overlay_alpha * overlay_img[:, :, :3] + background_alpha * img[y1:y2, x1:x2]

cv2.imshow('img',img)
cv2.waitKey(0)
  • 배경이 될 이미지는, 삽입될 이미지의 좌표값을 0을 초기화 한다.
  • 삽입될 이미지는 자신의 배경을 0으로 초기화 한다.
  • x,y의 좌표값만 적절히 수정하여 알맞는 위치에 삽입
  • RGBA
    A = 투명도
    0(투명) ~ 255(불투명)
  • overlay_alpha = overlay_img[:, :, 3:] / 255.0
    리스트 슬라이스 요소[높이:,너비:,체널:]
    슬라이스 3을 하는 이유
    RGBA(0,1,2,3)
    RGB를 잘라내고 , A 체널만 남김


동영상 출력하기

  • 동영상 로드해서 출력
import cv2

cap = cv2.VideoCapture('04.mp4')
# VideoCapture : 동영상 로드
# 동영상 : 이미지의 연속

while True:
	ret, img = cap.read()
    # img : 동영상의 현재 프레임에 맞는 이미지 로드
    # ret : 동영상이 끝나면 False

	if ret == False:
		break

	cv2.imshow('result', img)
	
	if cv2.waitKey(100) == ord('q'):
		break
    # waitKey(n) : n millisecond 만큼 기다린다.
    # ord('q') : 만약 키보드의 q 버튼을 누르면 종료해라
  • 출력되는 동영상을 수정
import cv2

# cap = cv2.VideoCapture('04.mp4')
cap = cv2.VideoCapture(0)
# VideoCapture : 동영상 로드
# value를 0으로 설정시 캠으로 연결
# 동영상 : 이미지의 연속

while True:
    ret, img = cap.read()
    # img : 동영상의 현재 프레임에 맞는 이미지 로드
    # ret : 동영상이 끝나면 False
    if ret == False:
       break
    
    cv2.rectangle(img, pt1=(721, 183), pt2=(878, 465), color=(255, 0, 0), thickness=2)
    # 동영상에 사각형 띄우기
    
    img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    # BGR을 흑백으로 변경
    
    img = cv2.resize(img,dsize=(640,360))
    # 이미지 크기 조정
    
    # img = img[100:200,150:250]
    # 이미지 자르기
    
    cv2.imshow('result', img)
    
    

    if cv2.waitKey(30) == ord('q'):
	    break
# waitKey(n) : n millisecond 만큼 기다린다.
# ord('q') : 만약 키보드의 q 버튼을 누르면 종료해라


1주차 숙제, 동영상 자르기

업로드중..

import cv2

cap = cv2.VideoCapture('03.mp4')

while True:
    ret, img = cap.read()

    if not ret:
        break

    img = img[183:465, 721:878]
    img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

    cv2.imshow('cropped_img', img)
    # 결과값
    if cv2.waitKey(30) == ord('q'):
        break
profile
더 노력하겠습니다

0개의 댓글