* Computer Vision(opencv:Open Source Computer Vision 라이브러리 사용)의 사용처 *
Computer Vision은 강력한 기능이며 여러 유형의 애플리케이션 및 감지 디바이스와 결합하여 다양한 실용적인 사용 사례를 지원할 수 있다. 대표적인 몇 가지 종류의 Computer Vision 애플리케이션을 소개하면 다음과 같다.
콘텐츠 구성 | Computer Vision을 사용하여 사진에서 사람이나 개체를 식별하고 식별된 내용에 따라 구성할 수 있다. 이와 같은 사진 인식 애플리케이션은 사진 스토리지 및 소셜 미디어 애플리케이션에서 일반적으로 사용된다. |
텍스트 추출 | 광학 인식은 대량의 텍스트에 포함된 정보에 대한 콘텐츠 검색 기능을 향상하고 로봇 처리 자동화 시나리오를 위한 문서 처리를 지원하는 데 사용할 수 있다. |
증강 현실 | Computer Vision을 사용하여 물리적 개체를 실시간으로 검색 및 추적합니다. 그런 다음 물리적 환경에 가상 개체를 현실적으로 배치하는 데 이 정보가 사용된다. |
자율 차량 | 자율 주행차는 실시간 개체 식별 및 추적을 사용하여 자동차 주위에서 발생하는 상황에 대한 정보를 수집하고 그에 따라 자동차를 주행시킨다. |
공간 분석 | 시스템에서는 사람 또는 개체(예: 자동차)를 공간에서 식별하고 해당 공간 내에서의 이동을 추적한다. |
얼굴 인식 | Computer Vision을 적용하여 개인을 식별할 수 있다. |
의료 | 의사가 문제를 식별하고 더 빠르고 정확하게 진단하도록 돕기 위해 다른 의료 디바이스로 캡처한 사진이나 이미지를 분석할 수 있다. |
스포츠 | 개체 감지 및 추적은 경기 및 전략 분석에 사용된다. |
제조 | Computer Vision은 유지 관리 목적으로 제조 기계를 모니터링할 수 있다. 제품 품질 및 제조 라인의 패키지를 모니터링하는 데 사용할 수도 있다. |
농업 | 인공위성, 드론 또는 비행기에서 촬영한 작물 이미지를 분석하여 수확을 모니터링하거나 잡초를 감지하거나 작물 영양 결핍을 식별할 수 있다. |
선행 학습 : opencv
https://cafe.daum.net/flowlife/RUrO/15
MediaPipe로 AI python 프로그램 개발
https://makernambo.com/154
https://google.github.io/mediapipe/
https://puleugo.tistory.com/category/%5B%EC%BD%94%EB%94%A9%20%EC%9B%90%EB%AC%B8%20%ED%95%B4%EC%84%9D%5D/MediaPipe%20%7C%20%EC%96%BC%EA%B5%B4%2C%20%ED%8F%AC%EC%A6%88%EC%9D%B8%EC%8B%9D%20%EB%AA%A8%EB%93%88
LEARN OPENCV in 3 HOURS with Python https://www.youtube.com/watch?v=WQeoO7MI0Bs
https://everyday-image-processing.tistory.com/159
--- 동영상 얼굴 인식 연습해 보기 ---
# https://google.github.io/mediapipe/solutions/face_detection 페이지에 있는 소스 사용해 보기
# pip install ovencv-python
import cv2
# pip install mediapipe
import mediapipe as mp
mp_face_detection = mp.solutions.face_detection # 얼굴 인식을 위한 모듈 사용
mp_drawing = mp.solutions.drawing_utils # 얼굴 특징을 그리기 위한 모듈 사용
# https://www.pexels.com/search/videos/talking/ 페이지에서 원하는 동영상을 다운받는다.
cap = cv2.VideoCapture('video.mp4')
# model_selection=0 or 1 : 2 미터 이내에서 촤령한 얼굴이냐 아니냐에 따라 부여
# min_detection_confidence=0.5 : 얼굴로 인식하기 위한 확률 값으로 1에 가까울 수록 좀 더 확실한 얼굴만 인식
with mp_face_detection.FaceDetection(model_selection=0, min_detection_confidence=0.5) as face_detection:
while cap.isOpened(): # 동영상이 정상적으로 오픈된 경우 작업
success, image = cap.read()
if not success:
break
# To improve performance, optionally mark the image as not writeable to
# pass by reference.
image.flags.writeable = False
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) # BGR을 RGB로 변환해서 처리함
results = face_detection.process(image) # 얼굴 인식 결과 저장
# Draw the face detection annotations on the image.
image.flags.writeable = True
image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
if results.detections: # 얼굴 인식 결과가 있는 경우
for detection in results.detections:
print('detection : ', detection) # 얼굴 부위(눈 좌우, 코, 입, 귀 좌우) 좌표 확인
# 얼굴부위 특정 위치 값 얻기
keypoints = detection.location_data.relative_keypoints
reye = keypoints[0] # 오른쪽 눈
leye = keypoints[1] # 왼쪽 눈
leye = keypoints[2] # 코 끝
h, w, _ = image.shape # height, weight, channel 이미지 크기 얻기
reye = (int(reye.x * w), int(reye.y * h)) # 튜플로 이미지 내에서의 실제 좌표 x, y가 됨
leye = (int(leye.x * w), int(leye.y * h))
# 눈 부위에 동그라미 표시
cv2.circle(image, reye, 50, (255, 0, 0), 5, cv2.LINE_AA)
cv2.circle(image, leye, 50, (0, 0, 255), 5, cv2.LINE_AA)
mp_drawing.draw_detection(image, detection) # 얼굴 인식 결과로 이미지를 그림
# Flip the image horizontally for a selfie-view display.
cv2.imshow('MediaPipe Face Detection', image)
#cv2.imshow('MediaPipe Face Detection', cv2.resize(image, None, fx=0.5, fy=0.5)) # size 절반으로 축소
if cv2.waitKey(1) == ord('q'): # 키보드에서 q를 눌러 화면 종료
break
cap.release()
#cv2.destroyAllWindows()