- 스크롤 가장 하단, 운영체제에 맞는 프로그램 설치
- 체크박스 클릭
- 체크박스 해제
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
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 버튼을 누르면 종료해라
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