영상인식은 사람, 물체, 장소 및 기타 요소를 식별할 수 있는 이미지를 감지하고 분석하는 기술이다.
분류, 태깅, 검출, 분할 등과 같은 기술을 사용해 공장 자동화 시스템에서 얼굴 인식, 의료 분야에서 질병 진단, 자율 주행 차량에서의 장애물 인식에 이르기까지 다양한 분야에 적용된다.
OpenCv(Open Source Computer Vision)는 이미지나 영상 처리에 사용할 수 있는 오픈 소스 라이브러리이다. OpenCV의 기원은 인텔에서부터 시작되는데, 컴퓨터 비전과 인공지능의 발달 시키고자 하는 바램으로 OpenCV를 출시한 것이다.
인텔은 OpenCV를 배포해서 OpenCV가 점차 발전함에 따라 빠른 인텔 프로세서의 수요가 늘어나는 것을 노렸을 지도
이런 걸 할 수 있다.
파이썬이 없어도 OK입니다
아나콘다 설치
https://www.anaconda.com/download#downloads
mac m2쓰는 사람도 맨 위에 있는 것 말고 아래에 있는 m1용을 깔도록 하자.
가상환경 생성 및 실행
conda create -n [가상환경 이름] python=[사용할 파이썬 버전]
conda activate [가상환경 이름]
pip install ipykernel
python -m ipykernel install --user --name [가상환경 이름] --display-name [가상환경 이름]
conda activate [가상환경 이름]
jupyter notebook
import cv2
img = cv2.imread('data/Dog.jpg')
cv2.imshow('image', img) # 파일 경로에서부터 사진을 찾아 이미지를 출력해준다.
cv2.waitKey() # 안에 들어가는 숫자의 ms만큼 기다린다.
cv2.destroyAllWindows()
cv2.waitKey(1)
cv2.waitKey(1)
cv2.waitKey(1)
cv2.waitKey(1)
사진을 흑백으로 띄우고 싶으면 imshow 부분을 아래처럼 쓰면 된다
cv2.imshow('image', gray) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow('image', gray)
cv2.waitKey(1) * 4 는 mac을 사용하는 사람만 써주면 된다..
cap = cv2.VideoCapture(0)
print(cap.isOpened())
while(cap.isOpened()):
ret, frame = cap.read() # 웹캠에서 성공여부 ret과 이미지객체 frame 을 추출한다
if ret :
cv2.imshow('frame', frame) # 이미지를 윈도우에 출력
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break
cap.release()
cv2.destroyAllWindows()
cv2.waitKey(1)
cv2.waitKey(1)
cv2.waitKey(1)
cv2.waitKey(1)
이것도 흑백처럼 쓸 수 있다.
if ret :
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('frame', gray)
import cv2
cap = cv2.VideoCapture(0)
fourcc = cv2.VideoWriter_fourcc(*'XVID') # 코덱 정하기
out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640,480)) # 영상녹화 세팅
print(cap.isOpened())
while(cap.isOpened()):
ret, frame = cap.read()
if ret == True:
out.write(frame)
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('frame', gray)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break
cap.release()
out.release()
cv2.destroyAllWindows()
cv2.waitKey(1)
cv2.waitKey(1)
cv2.waitKey(1)
cv2.waitKey(1)
import cv2
import datetime
cap = cv2.VideoCapture(0)
while(cap.isOpened()):
ret, frame = cap.read()
if ret :
font = cv2.FONT_HERSHEY_SIMPLEX
text = 'Width: ' + str(cap.get(3)) + ' Height: ' + str(cap.get(4)) # 그냥 글자 그대로 너비랑 높이다
datet = str(datetime.datetime.now()) # 지금시간
frame = cv2.putText(frame, datet, (10,50), font, 1, (0,255,255), 2, cv2.LINE_AA) # 글자 출력
cv2.imshow('frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break
cap.release()
cv2.destroyAllWindows()
cv2.waitKey(1)
cv2.waitKey(1)
cv2.waitKey(1)
cv2.waitKey(1)
지금까지 배운 것들을 통해 과제를 해결해보자
과제(assignment 라는 뜻)
- 이미지를 불러오는데 제목을 이미지 오른쪽 상단에 넣기
- 웹캠 영상을 불러오는데 웹캠 영상 왼쪽 상단에 HADURI 라고 출력
웹캠 영상 오른쪽 하단에 본인 영어 이름 출력
출력될 때는 컬러로 출력되지만
녹화본은 그레이스케일로 녹화
1. 이미지를 불러오는데 제목을 이미지 오른쪽 상단에 넣기
import cv2
img = cv2.imread('data/very_hard.jpg')
font = cv2.FONT_HERSHEY_SIMPLEX
text = "i'm tired"
cv2.putText(img, text, (400,50), font, 1, (0,255,255), 2, cv2.LINE_AA) # 위치 (400,50), 폰트 크기 1, 색깔 하양, 두께 2
cv2.imshow('image', img)
cv2.waitKey()
cv2.destroyAllWindows()
cv2.waitKey(1)
cv2.waitKey(1)
cv2.waitKey(1)
cv2.waitKey(1)
2. HADURI 웹캠
import cv2
import datetime
cap = cv2.VideoCapture(0)
fourcc = cv2.VideoWriter_fourcc(*'XVID') # 저장하려고 코덱 설정
out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640,480), isColor=False) # isColor=False -> 흑백으로 저장
while(cap.isOpened()):
ret, frame = cap.read()
if ret :
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
out.write(gray) # 그레이스케일로 녹화
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(frame, 'HADURI', (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 194, 133), 2, cv2.LINE_AA)
cv2.putText(frame, 'KimEunHye', (frame.shape[1] - 100, frame.shape[0] - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 255, 255), 1, cv2.LINE_AA)
cv2.imshow('frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break
cap.release()
out.release()
cv2.destroyAllWindows()
cv2.waitKey(1)
cv2.waitKey(1)
cv2.waitKey(1)
cv2.waitKey(1)
아무래도 얼굴은 부담스러워서 귀여운 농담곰으로 대체했습니다.
mac에서 avi파일이 안열리길래 잘 저장됐나보다 생각하겠습니다.
끝~~~